Add an user management page for admins

This commit is contained in:
2026-04-30 23:51:11 +02:00
parent d8d7bc9570
commit e29743d5fa
14 changed files with 262 additions and 4 deletions

View File

@@ -0,0 +1,33 @@
package query
import (
"git.artlef.fr/bibliomane/internal/dto"
"git.artlef.fr/bibliomane/internal/model"
"gorm.io/gorm"
)
func FetchAllUsers(db *gorm.DB, limit int, offset int) ([]dto.UserGet, error) {
var books []dto.UserGet
query := fetchAllUserQuery(db)
query = query.Limit(limit)
query = query.Offset(offset)
query = query.Order("users.id DESC")
res := query.Find(&books)
return books, res.Error
}
func FetchAllUsersCount(db *gorm.DB) (int64, error) {
var count int64
query := fetchAllUserQuery(db)
res := query.Count(&count)
return count, res.Error
}
func fetchAllUserQuery(db *gorm.DB) *gorm.DB {
query := db.Model(&model.User{})
query = query.Select("users.id, users.name, users.admin, count(distinct books.id) as added_books_count, count(distinct user_books.id) as user_books_count")
query = query.Joins("left join books on (books.added_by_id = users.id)")
query = query.Joins("left join user_books on user_books.user_id = users.id")
query = query.Group("users.id, users.name")
return query
}