Files
pig-farm-controller/internal/infra/repository/pen_repository.go

47 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package repository
import (
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
"gorm.io/gorm"
)
// PenRepository 定义了与猪栏模型相关的数据库操作接口。
type PenRepository interface {
GetPenByIDTx(tx *gorm.DB, penID uint) (*models.Pen, error)
GetPensByBatchIDTx(tx *gorm.DB, batchID uint) ([]*models.Pen, error)
UpdatePenFieldsTx(tx *gorm.DB, penID uint, updates map[string]interface{}) error
}
// penRepository 是 PenRepository 接口的 gorm 实现。
type penRepository struct {
db *gorm.DB
}
// NewPenRepository 创建一个新的 PenRepository 实例。
func NewPenRepository(db *gorm.DB) PenRepository {
return &penRepository{db: db}
}
// GetPenByIDTx 在指定的事务中通过ID获取单个猪栏信息。
func (r *penRepository) GetPenByIDTx(tx *gorm.DB, penID uint) (*models.Pen, error) {
var pen models.Pen
if err := tx.First(&pen, penID).Error; err != nil {
return nil, err
}
return &pen, nil
}
// GetPensByBatchIDTx 在指定的事务中,获取一个猪群当前关联的所有猪栏。
func (r *penRepository) GetPensByBatchIDTx(tx *gorm.DB, batchID uint) ([]*models.Pen, error) {
var pens []*models.Pen
if err := tx.Where("pig_batch_id = ?", batchID).Find(&pens).Error; err != nil {
return nil, err
}
return pens, nil
}
// UpdatePenFieldsTx 在指定的事务中,更新一个猪栏的指定字段。
func (r *penRepository) UpdatePenFieldsTx(tx *gorm.DB, penID uint, updates map[string]interface{}) error {
return tx.Model(&models.Pen{}).Where("id = ?", penID).Updates(updates).Error
}