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
|
2025-07-23 11:41:12 +08:00
|
|
|
|
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-07-23 11:41:12 +08:00
|
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-23 11:41:12 +08:00
|
|
|
|
// UpdateWithAllFields 更新Cks,包括零值字段
|
|
|
|
|
|
func (r *CksRepositoryImpl) UpdateWithAllFields(cks *entity.Cks) error {
|
|
|
|
|
|
return r.db.Save(cks).Error
|
|
|
|
|
|
}
|