dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 9ba48130b378c94db7dbd193edf9020f2418d2df
parent 7ca2e03d163ff37f2d9f04a57276cac086554d83
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 16 Jan 2023 00:55:23 -0800

cleanup paginators

Diffstat:
Mpkg/web/handlers/admin.go | 134++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mpkg/web/handlers/handlers.go | 41++++++++++++++++++++++-------------------
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").