feat():learning后台管理项目初始化
This commit is contained in:
75
internal/storage/user_project_quota_storage.go
Normal file
75
internal/storage/user_project_quota_storage.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"goalfymax-admin/internal/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type UserProjectQuotaFilter struct {
|
||||
UserID string
|
||||
Enabled *bool
|
||||
Page int
|
||||
Size int
|
||||
}
|
||||
|
||||
type UserProjectQuotaStorage interface {
|
||||
Create(q *models.UserProjectQuota) error
|
||||
Update(q *models.UserProjectQuota) error
|
||||
Delete(id uint) error
|
||||
GetByID(id uint) (*models.UserProjectQuota, error)
|
||||
GetByUserID(userID string) (*models.UserProjectQuota, error)
|
||||
List(filter UserProjectQuotaFilter) ([]models.UserProjectQuota, int64, error)
|
||||
}
|
||||
|
||||
type userProjectQuotaStorage struct{ db *gorm.DB }
|
||||
|
||||
func NewUserProjectQuotaStorage() UserProjectQuotaStorage { return &userProjectQuotaStorage{db: DB} }
|
||||
|
||||
func (s *userProjectQuotaStorage) Create(q *models.UserProjectQuota) error {
|
||||
return s.db.Create(q).Error
|
||||
}
|
||||
func (s *userProjectQuotaStorage) Update(q *models.UserProjectQuota) error { return s.db.Save(q).Error }
|
||||
func (s *userProjectQuotaStorage) Delete(id uint) error {
|
||||
return s.db.Delete(&models.UserProjectQuota{}, id).Error
|
||||
}
|
||||
func (s *userProjectQuotaStorage) GetByID(id uint) (*models.UserProjectQuota, error) {
|
||||
var out models.UserProjectQuota
|
||||
if err := s.db.First(&out, id).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &out, nil
|
||||
}
|
||||
func (s *userProjectQuotaStorage) GetByUserID(userID string) (*models.UserProjectQuota, error) {
|
||||
var out models.UserProjectQuota
|
||||
if err := s.db.Where("user_id = ?", userID).First(&out).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &out, nil
|
||||
}
|
||||
func (s *userProjectQuotaStorage) List(filter UserProjectQuotaFilter) ([]models.UserProjectQuota, int64, error) {
|
||||
var (
|
||||
items []models.UserProjectQuota
|
||||
total int64
|
||||
)
|
||||
q := s.db.Model(&models.UserProjectQuota{})
|
||||
if filter.UserID != "" {
|
||||
q = q.Where("user_id LIKE ?", "%"+filter.UserID+"%")
|
||||
}
|
||||
if filter.Enabled != nil {
|
||||
q = q.Where("enabled = ?", *filter.Enabled)
|
||||
}
|
||||
if err := q.Count(&total).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
page, size := filter.Page, filter.Size
|
||||
if page <= 0 {
|
||||
page = 1
|
||||
}
|
||||
if size <= 0 || size > 200 {
|
||||
size = 20
|
||||
}
|
||||
if err := q.Order("id DESC").Offset((page - 1) * size).Limit(size).Find(&items).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
return items, total, nil
|
||||
}
|
||||
Reference in New Issue
Block a user