fix: align admin behavior and Kratos integrations
This commit is contained in:
+27
-17
@@ -71,32 +71,45 @@ func (r *mediaRepo) FindMediaByHash(ctx context.Context, userID uint, hash strin
|
||||
}
|
||||
return mediaFromPO(po), nil
|
||||
}
|
||||
func (r *mediaRepo) ListMedia(ctx context.Context, page, size int, keyword string, categoryID int, tag string, userID uint) ([]*biz.MediaFile, int64, error) {
|
||||
if page < 1 {
|
||||
page = 1
|
||||
func (r *mediaRepo) ListMedia(ctx context.Context, filter biz.MediaFilter) ([]*biz.MediaFile, int64, error) {
|
||||
if filter.Page < 1 {
|
||||
filter.Page = 1
|
||||
}
|
||||
if size < 1 {
|
||||
size = 10
|
||||
if filter.PageSize < 1 {
|
||||
filter.PageSize = 10
|
||||
}
|
||||
db := r.data.gormDB.WithContext(ctx).Model(&mediaPO{})
|
||||
if keyword != "" {
|
||||
db = db.Where("name LIKE ?", "%"+keyword+"%")
|
||||
if filter.Keyword != "" {
|
||||
db = db.Where("name LIKE ?", "%"+filter.Keyword+"%")
|
||||
}
|
||||
if categoryID > 0 {
|
||||
db = db.Where("class_id = ?", categoryID)
|
||||
if filter.CategoryID > 0 {
|
||||
db = db.Where("class_id = ?", filter.CategoryID)
|
||||
}
|
||||
if tag != "" {
|
||||
db = db.Where("tag = ?", tag)
|
||||
if filter.Tag != "" {
|
||||
db = db.Where("tag = ?", filter.Tag)
|
||||
}
|
||||
if userID > 0 {
|
||||
db = db.Where("user_id = ?", userID)
|
||||
if filter.UserID > 0 {
|
||||
db = db.Where("user_id = ?", filter.UserID)
|
||||
}
|
||||
if !filter.StartCreatedAt.IsZero() {
|
||||
db = db.Where("created_at >= ?", filter.StartCreatedAt)
|
||||
}
|
||||
if !filter.EndCreatedAt.IsZero() {
|
||||
db = db.Where("created_at < ?", filter.EndCreatedAt)
|
||||
}
|
||||
var total int64
|
||||
if err := db.Count(&total).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
var pos []mediaPO
|
||||
if err := db.Order("id desc").Offset((page - 1) * size).Limit(size).Find(&pos).Error; err != nil {
|
||||
orderKey := filter.OrderKey
|
||||
if orderKey != "id" && orderKey != "size" && orderKey != "created_at" && orderKey != "name" {
|
||||
orderKey = "id"
|
||||
}
|
||||
if filter.Desc {
|
||||
orderKey += " desc"
|
||||
}
|
||||
if err := applyPagination(db.Order(orderKey), filter.Page, filter.PageSize, 100).Find(&pos).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
out := make([]*biz.MediaFile, 0, len(pos))
|
||||
@@ -130,9 +143,6 @@ func (r *mediaRepo) SaveCategory(ctx context.Context, v *biz.AttachmentCategory)
|
||||
db := r.data.gormDB.WithContext(ctx)
|
||||
var count int64
|
||||
query := db.Model(&categoryPO{}).Where("name = ? AND pid = ?", v.Name, v.ParentID)
|
||||
if v.ID != 0 {
|
||||
query = query.Where("id <> ?", v.ID)
|
||||
}
|
||||
if err := query.Count(&count).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user