Files
urldb/db/repo/cks_repository.go

101 lines
2.9 KiB
Go
Raw Normal View History

2025-07-10 13:56:37 +08:00
package repo
import (
2025-10-28 11:07:00 +08:00
"time"
2025-07-18 09:42:07 +08:00
"github.com/ctwj/urldb/db/entity"
2025-10-28 11:07:00 +08:00
"github.com/ctwj/urldb/utils"
2025-07-10 13:56:37 +08:00
"gorm.io/gorm"
)
// CksRepository Cks的Repository接口
type CksRepository interface {
BaseRepository[entity.Cks]
FindByPanID(panID uint) ([]entity.Cks, error)
2025-09-05 01:28:24 +08:00
FindByIds(ids []uint) ([]*entity.Cks, error)
2025-07-11 10:01:48 +08:00
FindByIsValid(isValid bool) ([]entity.Cks, error)
UpdateSpace(id uint, space, leftSpace int64) error
2025-07-10 13:56:37 +08:00
DeleteByPanID(panID uint) error
UpdateWithAllFields(cks *entity.Cks) error
2025-07-10 13:56:37 +08:00
}
// CksRepositoryImpl Cks的Repository实现
type CksRepositoryImpl struct {
BaseRepositoryImpl[entity.Cks]
}
// NewCksRepository 创建Cks Repository
func NewCksRepository(db *gorm.DB) CksRepository {
return &CksRepositoryImpl{
BaseRepositoryImpl: BaseRepositoryImpl[entity.Cks]{db: db},
}
}
// FindByPanID 根据PanID查找
func (r *CksRepositoryImpl) FindByPanID(panID uint) ([]entity.Cks, error) {
var cks []entity.Cks
err := r.db.Where("pan_id = ?", panID).Find(&cks).Error
return cks, err
}
2025-07-11 10:01:48 +08:00
// FindByIsValid 根据有效性查找
func (r *CksRepositoryImpl) FindByIsValid(isValid bool) ([]entity.Cks, error) {
2025-07-10 13:56:37 +08:00
var cks []entity.Cks
2025-07-11 10:01:48 +08:00
err := r.db.Where("is_valid = ?", isValid).Find(&cks).Error
2025-07-10 13:56:37 +08:00
return cks, err
}
2025-07-11 10:01:48 +08:00
// UpdateSpace 更新空间信息
func (r *CksRepositoryImpl) UpdateSpace(id uint, space, leftSpace int64) error {
return r.db.Model(&entity.Cks{}).Where("id = ?", id).
Updates(map[string]interface{}{
"space": space,
"left_space": leftSpace,
}).Error
}
2025-07-10 13:56:37 +08:00
// DeleteByPanID 根据PanID删除
func (r *CksRepositoryImpl) DeleteByPanID(panID uint) error {
return r.db.Where("pan_id = ?", panID).Delete(&entity.Cks{}).Error
}
2025-07-17 02:09:24 +08:00
// FindAll 查找所有Cks预加载Pan关联数据
func (r *CksRepositoryImpl) FindAll() ([]entity.Cks, error) {
var cks []entity.Cks
err := r.db.Preload("Pan").Find(&cks).Error
return cks, err
}
// FindByID 根据ID查找Cks预加载Pan关联数据
func (r *CksRepositoryImpl) FindByID(id uint) (*entity.Cks, error) {
2025-10-28 11:07:00 +08:00
startTime := utils.GetCurrentTime()
2025-07-17 02:09:24 +08:00
var cks entity.Cks
err := r.db.Preload("Pan").First(&cks, id).Error
2025-10-28 11:07:00 +08:00
queryDuration := time.Since(startTime)
2025-07-17 02:09:24 +08:00
if err != nil {
2025-10-28 11:07:00 +08:00
utils.Debug("FindByID失败: ID=%d, 错误=%v, 查询耗时=%v", id, err, queryDuration)
2025-07-17 02:09:24 +08:00
return nil, err
}
2025-10-28 11:07:00 +08:00
utils.Debug("FindByID成功: ID=%d, 查询耗时=%v", id, queryDuration)
2025-07-17 02:09:24 +08:00
return &cks, nil
}
2025-09-05 01:28:24 +08:00
func (r *CksRepositoryImpl) FindByIds(ids []uint) ([]*entity.Cks, error) {
2025-10-28 11:07:00 +08:00
startTime := utils.GetCurrentTime()
2025-09-05 01:28:24 +08:00
var cks []*entity.Cks
err := r.db.Preload("Pan").Where("id IN ?", ids).Find(&cks).Error
2025-10-28 11:07:00 +08:00
queryDuration := time.Since(startTime)
2025-09-05 01:28:24 +08:00
if err != nil {
2025-10-28 11:07:00 +08:00
utils.Debug("FindByIds失败: IDs数量=%d, 错误=%v, 查询耗时=%v", len(ids), err, queryDuration)
2025-09-05 01:28:24 +08:00
return nil, err
}
2025-10-28 11:07:00 +08:00
utils.Debug("FindByIds成功: 找到%d个账号查询耗时=%v", len(cks), queryDuration)
2025-09-05 01:28:24 +08:00
return cks, nil
}
// UpdateWithAllFields 更新Cks包括零值字段
func (r *CksRepositoryImpl) UpdateWithAllFields(cks *entity.Cks) error {
return r.db.Save(cks).Error
}