增加删除检查
This commit is contained in:
@@ -8,8 +8,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrHouseContainsPens = errors.New("cannot delete a pig house that still contains pens")
|
ErrHouseContainsPens = errors.New("请在移除所有猪圈后移除当前猪舍")
|
||||||
ErrHouseNotFound = errors.New("the specified pig house does not exist")
|
ErrHouseNotFound = errors.New("猪舍不存在")
|
||||||
|
ErrPenInUse = errors.New("猪栏正在被活跃批次使用,无法删除")
|
||||||
)
|
)
|
||||||
|
|
||||||
// PigFarmRepository 定义了与猪场资产(猪舍、猪栏)相关的数据库操作接口
|
// PigFarmRepository 定义了与猪场资产(猪舍、猪栏)相关的数据库操作接口
|
||||||
@@ -146,7 +147,28 @@ func (r *gormPigFarmRepository) UpdatePen(pen *models.Pen) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *gormPigFarmRepository) DeletePen(id uint) error {
|
func (r *gormPigFarmRepository) DeletePen(id uint) error {
|
||||||
result := r.db.Delete(&models.Pen{}, id)
|
return r.db.Transaction(func(tx *gorm.DB) error {
|
||||||
|
var pen models.Pen
|
||||||
|
if err := tx.First(&pen, id).Error; err != nil {
|
||||||
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
return gorm.ErrRecordNotFound
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查猪栏是否被活跃批次使用
|
||||||
|
if pen.PigBatchID != 0 {
|
||||||
|
var pigBatch models.PigBatch
|
||||||
|
err := tx.First(&pigBatch, pen.PigBatchID).Error
|
||||||
|
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if pigBatch.IsActive() {
|
||||||
|
return ErrPenInUse
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result := tx.Delete(&models.Pen{}, id)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return result.Error
|
return result.Error
|
||||||
}
|
}
|
||||||
@@ -154,4 +176,5 @@ func (r *gormPigFarmRepository) DeletePen(id uint) error {
|
|||||||
return gorm.ErrRecordNotFound
|
return gorm.ErrRecordNotFound
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user