更新前后端代码
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
|
||||
"filestoragesystem/internal/model"
|
||||
)
|
||||
|
||||
// ProjectRepo 项目数据访问
|
||||
type ProjectRepo struct{ DB *gorm.DB }
|
||||
|
||||
func (r *ProjectRepo) Create(p *model.Project) error { return r.DB.Create(p).Error }
|
||||
|
||||
func (r *ProjectRepo) FindByID(id uint) (*model.Project, error) {
|
||||
var p model.Project
|
||||
err := r.DB.First(&p, id).Error
|
||||
return &p, err
|
||||
}
|
||||
|
||||
func (r *ProjectRepo) FindByName(userID uint, name string) (*model.Project, error) {
|
||||
var p model.Project
|
||||
err := r.DB.Where("user_id = ? AND name = ?", userID, name).First(&p).Error
|
||||
return &p, err
|
||||
}
|
||||
|
||||
// List 分页查询项目;keyword匹配名称;all为true时跨用户(管理员)
|
||||
func (r *ProjectRepo) List(userID uint, keyword string, all bool, page, pageSize int) ([]model.Project, int64, error) {
|
||||
q := r.DB.Model(&model.Project{})
|
||||
if !all {
|
||||
q = q.Where("user_id = ?", userID)
|
||||
}
|
||||
if keyword != "" {
|
||||
q = q.Where("name LIKE ?", "%"+keyword+"%")
|
||||
}
|
||||
var total int64
|
||||
if err := q.Count(&total).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
var projects []model.Project
|
||||
err := q.Order("id DESC").
|
||||
Offset((page - 1) * pageSize).Limit(pageSize).Find(&projects).Error
|
||||
return projects, total, err
|
||||
}
|
||||
|
||||
func (r *ProjectRepo) Update(p *model.Project) error { return r.DB.Save(p).Error }
|
||||
|
||||
func (r *ProjectRepo) Delete(id uint) error { return r.DB.Delete(&model.Project{}, id).Error }
|
||||
|
||||
// UpdateStorageUsed 增减项目已用存储
|
||||
func (r *ProjectRepo) UpdateStorageUsed(id uint, delta int64) error {
|
||||
return r.DB.Model(&model.Project{}).Where("id = ?", id).
|
||||
UpdateColumn("storage_used", gorm.Expr("storage_used + ?", delta)).Error
|
||||
}
|
||||
|
||||
// ListByUser 用户全部项目(用于统计)
|
||||
func (r *ProjectRepo) ListByUser(userID uint) ([]model.Project, error) {
|
||||
var projects []model.Project
|
||||
err := r.DB.Where("user_id = ?", userID).Find(&projects).Error
|
||||
return projects, err
|
||||
}
|
||||
Reference in New Issue
Block a user