|
|
|
@ -185,10 +185,13 @@ func UserJoinedRooms(ctx *gin.Context) {
|
|
|
|
|
scopes := []func(db *gorm.DB) *gorm.DB{
|
|
|
|
|
func(db *gorm.DB) *gorm.DB {
|
|
|
|
|
return db.
|
|
|
|
|
InnerJoins("JOIN room_members ON rooms.id = room_members.room_id").
|
|
|
|
|
Where("room_members.user_id = ? AND rooms.creator_id != ?", user.ID, user.ID)
|
|
|
|
|
InnerJoins("JOIN room_members ON rooms.id = room_members.room_id AND room_members.user_id = ? AND rooms.creator_id != ?", user.ID, user.ID)
|
|
|
|
|
},
|
|
|
|
|
func(db *gorm.DB) *gorm.DB {
|
|
|
|
|
return db.Preload("RoomMembers", func(db *gorm.DB) *gorm.DB {
|
|
|
|
|
return db.Where("user_id = ?", user.ID)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
db.WhereStatus(dbModel.RoomStatusActive),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if keyword := ctx.Query("keyword"); keyword != "" {
|
|
|
|
@ -213,15 +216,15 @@ func UserJoinedRooms(ctx *gin.Context) {
|
|
|
|
|
switch ctx.DefaultQuery("sort", "name") {
|
|
|
|
|
case "createdAt":
|
|
|
|
|
if desc {
|
|
|
|
|
scopes = append(scopes, db.OrderByCreatedAtDesc)
|
|
|
|
|
scopes = append(scopes, db.OrderByRoomCreatedAtDesc)
|
|
|
|
|
} else {
|
|
|
|
|
scopes = append(scopes, db.OrderByCreatedAtAsc)
|
|
|
|
|
scopes = append(scopes, db.OrderByRoomCreatedAtAsc)
|
|
|
|
|
}
|
|
|
|
|
case "name":
|
|
|
|
|
if desc {
|
|
|
|
|
scopes = append(scopes, db.OrderByDesc("name"))
|
|
|
|
|
scopes = append(scopes, db.OrderByDesc("rooms.name"))
|
|
|
|
|
} else {
|
|
|
|
|
scopes = append(scopes, db.OrderByAsc("name"))
|
|
|
|
|
scopes = append(scopes, db.OrderByAsc("rooms.name"))
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
log.Errorf("not support sort")
|
|
|
|
@ -229,9 +232,9 @@ func UserJoinedRooms(ctx *gin.Context) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
list, err := genRoomListResp(append(scopes, db.Paginate(page, pageSize))...)
|
|
|
|
|
list, err := genJoinedRoomListResp(append(scopes, db.Paginate(page, pageSize))...)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Errorf("failed to get all rooms: %v", err)
|
|
|
|
|
log.Errorf("failed to get joined rooms: %v", err)
|
|
|
|
|
ctx.AbortWithStatusJSON(http.StatusInternalServerError, model.NewApiErrorResp(err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|