commit 9ba48130b378c94db7dbd193edf9020f2418d2df
parent 7ca2e03d163ff37f2d9f04a57276cac086554d83
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Mon, 16 Jan 2023 00:55:23 -0800
cleanup paginators
Diffstat:
2 files changed, 93 insertions(+), 82 deletions(-)
diff --git a/pkg/web/handlers/admin.go b/pkg/web/handlers/admin.go
@@ -3,6 +3,7 @@ package handlers
import (
dutils "dkforest/pkg/database/utils"
"dkforest/pkg/managers"
+ "github.com/jinzhu/gorm"
"net/http"
"os"
"path/filepath"
@@ -91,14 +92,14 @@ func AdminGistsHandler(c echo.Context) error {
userQuery := c.QueryParam("u")
- query := database.DB.Table("gists")
- if userQuery != "" {
- query = query.Where("user_id = ?", userQuery)
- }
-
- data.CurrentPage, data.MaxPage, data.GistsCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.
+ if err := database.DB.Table("gists").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ if userQuery != "" {
+ query = query.Where("user_id = ?", userQuery)
+ }
+ data.CurrentPage, data.MaxPage, data.GistsCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
Preload("User").
Order("id DESC").
Find(&data.Gists).Error; err != nil {
@@ -173,19 +174,17 @@ func AdminDownloadsHandler(c echo.Context) error {
userQuery := c.QueryParam("u")
- query := database.DB.Table("downloads")
- if userQuery != "" {
- query = query.Where("user_id = ?", userQuery)
- }
-
- data.CurrentPage, data.MaxPage, data.DownloadsCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.
+ database.DB.Model(&database.Download{}).
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ if userQuery != "" {
+ query = query.Where("user_id = ?", userQuery)
+ }
+ data.CurrentPage, data.MaxPage, data.DownloadsCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
Preload("User").
Order("id DESC").
- Find(&data.Downloads).Error; err != nil {
- logrus.Error(err)
- }
+ Find(&data.Downloads)
return c.Render(http.StatusOK, "admin.downloads", data)
}
@@ -248,16 +247,20 @@ func AdminHandler(c echo.Context) error {
data.Query = strings.TrimSpace(c.QueryParam("q"))
likeQuery := "%" + data.Query + "%"
- query := database.DB.Table("users")
- if data.Query != "" {
- query = query.Where("username LIKE ?", likeQuery, likeQuery, data.Query)
- }
-
- data.CurrentPage, data.MaxPage, data.UsersCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.Order("id DESC").Find(&data.Users).Error; err != nil {
+ if err := database.DB.
+ Table("users").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ if data.Query != "" {
+ query = query.Where("username LIKE ?", likeQuery, likeQuery, data.Query)
+ }
+ data.CurrentPage, data.MaxPage, data.UsersCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
+ Order("id DESC").
+ Find(&data.Users).Error; err != nil {
logrus.Error(err)
}
+
return c.Render(http.StatusOK, "admin.users", data)
}
@@ -267,19 +270,21 @@ func SessionsHandler(c echo.Context) error {
data.Query = c.QueryParam("q")
likeQuery := "%" + data.Query + "%"
- query := database.DB.Table("sessions").Where("deleted_at IS NULL")
- if data.Query != "" {
- query = query.Where("token LIKE ?", likeQuery, likeQuery, data.Query)
- }
-
- data.CurrentPage, data.MaxPage, data.SessionsCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.
- Preload("User").
+ if err := database.DB.
+ Table("sessions").
+ Where("deleted_at IS NULL").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ if data.Query != "" {
+ query = query.Where("token LIKE ?", likeQuery, likeQuery, data.Query)
+ }
+ data.CurrentPage, data.MaxPage, data.SessionsCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).Preload("User").
Order("created_at DESC").
Find(&data.Sessions).Error; err != nil {
logrus.Error(err)
}
+
return c.Render(http.StatusOK, "admin.sessions", data)
}
@@ -289,21 +294,22 @@ func IgnoredHandler(c echo.Context) error {
data.Query = c.QueryParam("q")
likeQuery := "%" + data.Query + "%"
- query := database.DB.Table("ignored_users")
- if data.Query != "" {
- query = query.Where("token LIKE ?", likeQuery, likeQuery, data.Query)
- }
- query.Count(&data.IgnoredCount)
-
- data.CurrentPage, data.MaxPage, data.IgnoredCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.
+ if err := database.DB.
+ Table("ignored_users").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ if data.Query != "" {
+ query = query.Where("token LIKE ?", likeQuery, likeQuery, data.Query)
+ }
+ data.CurrentPage, data.MaxPage, data.IgnoredCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
Preload("User").
Preload("IgnoredUser").
Order("created_at DESC").
Find(&data.Ignored).Error; err != nil {
logrus.Error(err)
}
+
return c.Render(http.StatusOK, "admin.ignored", data)
}
@@ -356,11 +362,12 @@ func AdminAuditsHandler(c echo.Context) error {
var data adminAuditsData
data.ActiveTab = "audits"
- query := database.DB.Table("audit_logs")
-
- data.CurrentPage, data.MaxPage, data.AuditLogsCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.
+ if err := database.DB.
+ Table("audit_logs").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ data.CurrentPage, data.MaxPage, data.AuditLogsCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
Preload("User").
Order("id DESC").
Find(&data.AuditLogs).Error; err != nil {
@@ -375,14 +382,15 @@ func AdminRoomsHandler(c echo.Context) error {
data.Query = c.QueryParam("q")
likeQuery := "%" + data.Query + "%"
- query := database.DB.Table("chat_rooms")
- if data.Query != "" {
- query = query.Where("username LIKE ?", likeQuery, likeQuery, data.Query)
- }
-
- data.CurrentPage, data.MaxPage, data.RoomsCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.
+ if err := database.DB.
+ Table("chat_rooms").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ if data.Query != "" {
+ query = query.Where("username LIKE ?", likeQuery, likeQuery, data.Query)
+ }
+ data.CurrentPage, data.MaxPage, data.RoomsCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
Order("id DESC").
Preload("OwnerUser").
Find(&data.Rooms).Error; err != nil {
@@ -395,11 +403,11 @@ func AdminCaptchaHandler(c echo.Context) error {
var data adminCaptchaData
data.ActiveTab = "captcha"
- query := database.DB.Table("captcha_requests")
-
- data.CurrentPage, data.MaxPage, data.CaptchasCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.
+ if err := database.DB.Table("captcha_requests").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ data.CurrentPage, data.MaxPage, data.CaptchasCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
Preload("User").
Order("id DESC").
Find(&data.Captchas).Error; err != nil {
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -10,6 +10,7 @@ import (
"encoding/json"
"errors"
"fmt"
+ "github.com/jinzhu/gorm"
"github.com/notnil/chess"
_ "golang.org/x/image/bmp"
_ "golang.org/x/image/webp"
@@ -1216,11 +1217,11 @@ LIMIT 100`, data.Search).Scan(&data.Links).Error; err != nil {
data.LinksCount = int64(len(data.Links))
}
} else {
- query := database.DB.Table("links")
-
- data.CurrentPage, data.MaxPage, data.LinksCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.Order("title COLLATE NOCASE ASC").Find(&data.Links).Error; err != nil {
+ if err := database.DB.Table("links").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ data.CurrentPage, data.MaxPage, data.LinksCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).Order("title COLLATE NOCASE ASC").Find(&data.Links).Error; err != nil {
logrus.Error(err)
}
}
@@ -1649,11 +1650,13 @@ func ThreadHandler(c echo.Context) error {
var data threadData
data.Thread = thread
- query := database.DB.Table("forum_messages").Where("thread_id = ?", thread.ID)
-
- data.CurrentPage, data.MaxPage, data.MessagesCount, query = NewPaginator().Paginate(c, query)
-
- if err := query.
+ if err := database.DB.
+ Table("forum_messages").
+ Where("thread_id = ?", thread.ID).
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ data.CurrentPage, data.MaxPage, data.MessagesCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
Order("id ASC").
Where("thread_id = ?", thread.ID).
Preload("User").
@@ -3103,15 +3106,15 @@ func ChatArchiveHandler(c echo.Context) error {
}
data.Room = room
- query := database.DB.Table("chat_messages").
- Where("room_id = ? AND group_id IS NULL AND (to_user_id is null OR to_user_id = ? OR user_id = ?)", room.ID, authUser.ID, authUser.ID)
- if !authUser.DisplayIgnored {
- query = query.Where(`user_id NOT IN (SELECT ignored_user_id FROM ignored_users WHERE user_id = ?)`, authUser.ID)
- }
-
- data.CurrentPage, data.MaxPage, data.MessagesCount, query = NewPaginator().SetResultPerPage(300).Paginate(c, query)
-
- if err := query.
+ if err := database.DB.Table("chat_messages").
+ Where("room_id = ? AND group_id IS NULL AND (to_user_id is null OR to_user_id = ? OR user_id = ?)", room.ID, authUser.ID, authUser.ID).
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ if !authUser.DisplayIgnored {
+ query = query.Where(`user_id NOT IN (SELECT ignored_user_id FROM ignored_users WHERE user_id = ?)`, authUser.ID)
+ }
+ data.CurrentPage, data.MaxPage, data.MessagesCount, query = NewPaginator().SetResultPerPage(300).Paginate(c, query)
+ return query
+ }).
Order("id DESC").
Preload("Room").
Preload("User").