package repository import ( "time" "git.huangwc.com/pig/pig-farm-controller/internal/infra/models" "gorm.io/gorm" ) // PigTransferLogRepository 定义了猪只迁移日志数据持久化的接口。 type PigTransferLogRepository interface { // CreatePigTransferLog 在数据库中创建一条猪只迁移日志记录。 CreatePigTransferLog(tx *gorm.DB, log *models.PigTransferLog) error // GetLogsForPenSince 获取指定猪栏自特定时间点以来的所有迁移日志,按时间倒序排列。 GetLogsForPenSince(tx *gorm.DB, penID uint, since time.Time) ([]*models.PigTransferLog, error) } // gormPigTransferLogRepository 是 PigTransferLogRepository 接口的 GORM 实现。 type gormPigTransferLogRepository struct { db *gorm.DB } // NewGormPigTransferLogRepository 创建一个新的 PigTransferLogRepository GORM 实现实例。 func NewGormPigTransferLogRepository(db *gorm.DB) PigTransferLogRepository { return &gormPigTransferLogRepository{db: db} } // CreatePigTransferLog 实现了在数据库中创建猪只迁移日志记录的逻辑。 func (r *gormPigTransferLogRepository) CreatePigTransferLog(tx *gorm.DB, log *models.PigTransferLog) error { return tx.Create(log).Error } // GetLogsForPenSince 实现了获取猪栏自特定时间点以来所有迁移日志的逻辑。 func (r *gormPigTransferLogRepository) GetLogsForPenSince(tx *gorm.DB, penID uint, since time.Time) ([]*models.PigTransferLog, error) { var logs []*models.PigTransferLog err := tx.Where("pen_id = ? AND transfer_time >= ?", penID, since).Order("transfer_time DESC").Find(&logs).Error return logs, err }