40 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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
 | |
| }
 |