fix: postgres count search no need order and group by #223

This commit is contained in:
zijiren233 2024-09-08 18:40:49 +08:00
parent 919c0c7ddb
commit 0c1a3771df
4 changed files with 160 additions and 168 deletions

View File

@ -114,8 +114,6 @@ func Users(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
scopes := []func(db *gorm.DB) *gorm.DB{}
switch ctx.Query("role") {
@ -131,25 +129,6 @@ func Users(ctx *gin.Context) {
scopes = append(scopes, db.WhereRole(dbModel.RoleRoot))
}
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("username"))
} else {
scopes = append(scopes, db.OrderByAsc("username"))
}
default:
log.Error("not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
if keyword := ctx.Query("keyword"); keyword != "" {
// search mode, all, name, id
switch ctx.DefaultQuery("search", "all") {
@ -181,6 +160,26 @@ func Users(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("username"))
} else {
scopes = append(scopes, db.OrderByAsc("username"))
}
default:
log.Error("not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
list, err := db.GetAllUsers(append(scopes, db.Paginate(page, pageSize))...)
if err != nil {
log.WithError(err).Error("get all users error")
@ -218,8 +217,6 @@ func AdminGetRoomMembers(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
scopes := []func(db *gorm.DB) *gorm.DB{}
switch ctx.DefaultQuery("status", "active") {
@ -240,25 +237,6 @@ func AdminGetRoomMembers(ctx *gin.Context) {
scopes = append(scopes, db.WhereRoomMemberRole(dbModel.RoomMemberRoleCreator))
}
switch ctx.DefaultQuery("sort", "name") {
case "join":
if desc {
scopes = append(scopes, db.OrderByUsersCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByUsersCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("username"))
} else {
scopes = append(scopes, db.OrderByAsc("username"))
}
default:
log.Errorf("get room users failed: not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
if keyword := ctx.Query("keyword"); keyword != "" {
// search mode, all, name, id
switch ctx.DefaultQuery("search", "all") {
@ -297,6 +275,26 @@ func AdminGetRoomMembers(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
switch ctx.DefaultQuery("sort", "name") {
case "join":
if desc {
scopes = append(scopes, db.OrderByUsersCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByUsersCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("username"))
} else {
scopes = append(scopes, db.OrderByAsc("username"))
}
default:
log.Errorf("get room users failed: not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
list, err := db.GetAllUsers(append(scopes, db.Paginate(page, pageSize))...)
if err != nil {
log.Errorf("get room users failed: %v", err)
@ -454,8 +452,6 @@ func Rooms(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
scopes := []func(db *gorm.DB) *gorm.DB{}
switch ctx.Query("status") {
@ -467,25 +463,6 @@ func Rooms(ctx *gin.Context) {
scopes = append(scopes, db.WhereStatus(dbModel.RoomStatusBanned))
}
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("name"))
} else {
scopes = append(scopes, db.OrderByAsc("name"))
}
default:
log.Error("not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
if keyword := ctx.Query("keyword"); keyword != "" {
// search mode, all, name, creator
switch ctx.DefaultQuery("search", "all") {
@ -521,6 +498,26 @@ func Rooms(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("name"))
} else {
scopes = append(scopes, db.OrderByAsc("name"))
}
default:
log.Error("not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
list, err := genRoomListResp(append(scopes, db.Paginate(page, pageSize))...)
if err != nil {
log.WithError(err).Error("gen room list resp error")
@ -550,8 +547,6 @@ func GetUserRooms(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
scopes := []func(db *gorm.DB) *gorm.DB{
db.WhereCreatorID(id),
}
@ -565,25 +560,6 @@ func GetUserRooms(ctx *gin.Context) {
scopes = append(scopes, db.WhereStatus(dbModel.RoomStatusBanned))
}
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("name"))
} else {
scopes = append(scopes, db.OrderByAsc("name"))
}
default:
log.Error("not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
if keyword := ctx.Query("keyword"); keyword != "" {
// search mode, all, name, creator
switch ctx.DefaultQuery("search", "all") {
@ -603,6 +579,26 @@ func GetUserRooms(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("name"))
} else {
scopes = append(scopes, db.OrderByAsc("name"))
}
default:
log.Error("not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
list, err := genRoomListResp(append(scopes, db.Paginate(page, pageSize))...)
if err != nil {
log.WithError(err).Error("gen room list resp error")

View File

@ -24,8 +24,6 @@ func RoomMembers(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
scopes := []func(db *gorm.DB) *gorm.DB{}
switch ctx.DefaultQuery("role", "") {
@ -37,25 +35,6 @@ func RoomMembers(ctx *gin.Context) {
scopes = append(scopes, db.WhereRoomMemberRole(dbModel.RoomMemberRoleCreator))
}
switch ctx.DefaultQuery("sort", "name") {
case "join":
if desc {
scopes = append(scopes, db.OrderByUsersCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByUsersCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("username"))
} else {
scopes = append(scopes, db.OrderByAsc("username"))
}
default:
log.Errorf("get room users failed: not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
if keyword := ctx.Query("keyword"); keyword != "" {
// search mode, all, name, id
switch ctx.DefaultQuery("search", "all") {
@ -94,6 +73,26 @@ func RoomMembers(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
switch ctx.DefaultQuery("sort", "name") {
case "join":
if desc {
scopes = append(scopes, db.OrderByUsersCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByUsersCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("username"))
} else {
scopes = append(scopes, db.OrderByAsc("username"))
}
default:
log.Errorf("get room users failed: not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
list, err := db.GetAllUsers(append(scopes, db.Paginate(page, pageSize))...)
if err != nil {
log.Errorf("get room users failed: %v", err)
@ -118,8 +117,6 @@ func RoomAdminMembers(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
scopes := []func(db *gorm.DB) *gorm.DB{}
switch ctx.DefaultQuery("status", "active") {
@ -140,25 +137,6 @@ func RoomAdminMembers(ctx *gin.Context) {
scopes = append(scopes, db.WhereRoomMemberRole(dbModel.RoomMemberRoleCreator))
}
switch ctx.DefaultQuery("sort", "name") {
case "join":
if desc {
scopes = append(scopes, db.OrderByUsersCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByUsersCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("username"))
} else {
scopes = append(scopes, db.OrderByAsc("username"))
}
default:
log.Errorf("get room users failed: not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
if keyword := ctx.Query("keyword"); keyword != "" {
// search mode, all, name, id
switch ctx.DefaultQuery("search", "all") {
@ -197,6 +175,26 @@ func RoomAdminMembers(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
switch ctx.DefaultQuery("sort", "name") {
case "join":
if desc {
scopes = append(scopes, db.OrderByUsersCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByUsersCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("username"))
} else {
scopes = append(scopes, db.OrderByAsc("username"))
}
default:
log.Errorf("get room users failed: not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
list, err := db.GetAllUsers(append(scopes, db.Paginate(page, pageSize))...)
if err != nil {
log.Errorf("get room users failed: %v", err)

View File

@ -163,8 +163,6 @@ func RoomList(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
scopes := []func(db *gorm.DB) *gorm.DB{
func(db *gorm.DB) *gorm.DB {
return db.InnerJoins("JOIN room_settings ON rooms.id = room_settings.id")
@ -173,25 +171,6 @@ func RoomList(ctx *gin.Context) {
db.WhereStatus(dbModel.RoomStatusActive),
}
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("name"))
} else {
scopes = append(scopes, db.OrderByAsc("name"))
}
default:
log.Errorf("get room list failed: not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
if keyword := ctx.Query("keyword"); keyword != "" {
// search mode, all, name, creator
switch ctx.DefaultQuery("search", "all") {
@ -225,6 +204,26 @@ func RoomList(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("name"))
} else {
scopes = append(scopes, db.OrderByAsc("name"))
}
default:
log.Errorf("get room list failed: not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
list, err := genRoomListResp(append(scopes, db.Paginate(page, pageSize))...)
if err != nil {
log.Errorf("get room list failed: %v", err)

View File

@ -100,8 +100,6 @@ func UserRooms(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
scopes := []func(db *gorm.DB) *gorm.DB{
db.WhereCreatorID(user.ID),
}
@ -115,25 +113,6 @@ func UserRooms(ctx *gin.Context) {
scopes = append(scopes, db.WhereStatus(dbModel.RoomStatusBanned))
}
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("name"))
} else {
scopes = append(scopes, db.OrderByAsc("name"))
}
default:
log.Errorf("not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
if keyword := ctx.Query("keyword"); keyword != "" {
// search mode, all, name, creator
switch ctx.DefaultQuery("search", "all") {
@ -159,6 +138,26 @@ func UserRooms(ctx *gin.Context) {
return
}
var desc = ctx.DefaultQuery("order", "desc") == "desc"
switch ctx.DefaultQuery("sort", "name") {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)
} else {
scopes = append(scopes, db.OrderByCreatedAtAsc)
}
case "name":
if desc {
scopes = append(scopes, db.OrderByDesc("name"))
} else {
scopes = append(scopes, db.OrderByAsc("name"))
}
default:
log.Errorf("not support sort")
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("not support sort"))
return
}
list, err := genRoomListResp(append(scopes, db.Paginate(page, pageSize))...)
if err != nil {
log.Errorf("failed to get all rooms: %v", err)