查看计划简单信息和单测
This commit is contained in:
49
internal/infra/repository/plan_repository.go
Normal file
49
internal/infra/repository/plan_repository.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// PlanRepository 定义了与计划模型相关的数据库操作接口
|
||||
// 这是为了让业务逻辑层依赖于抽象,而不是具体的数据库实现
|
||||
type PlanRepository interface {
|
||||
// ListBasicPlans 获取所有计划的基本信息,不包含子计划和任务详情
|
||||
ListBasicPlans() ([]models.Plan, error)
|
||||
// GetBasicPlanByID 根据ID获取计划的基本信息,不包含子计划和任务详情
|
||||
GetBasicPlanByID(id uint) (*models.Plan, error)
|
||||
}
|
||||
|
||||
// gormPlanRepository 是 PlanRepository 的 GORM 实现
|
||||
type gormPlanRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// NewGormPlanRepository 创建一个新的 PlanRepository GORM 实现实例
|
||||
func NewGormPlanRepository(db *gorm.DB) PlanRepository {
|
||||
return &gormPlanRepository{
|
||||
db: db,
|
||||
}
|
||||
}
|
||||
|
||||
// ListBasicPlans 获取所有计划的基本信息,不包含子计划和任务详情
|
||||
func (r *gormPlanRepository) ListBasicPlans() ([]models.Plan, error) {
|
||||
var plans []models.Plan
|
||||
// GORM 默认不会加载关联,除非使用 Preload,所以直接 Find 即可满足要求
|
||||
result := r.db.Find(&plans)
|
||||
if result.Error != nil {
|
||||
return nil, result.Error
|
||||
}
|
||||
return plans, nil
|
||||
}
|
||||
|
||||
// GetBasicPlanByID 根据ID获取计划的基本信息,不包含子计划和任务详情
|
||||
func (r *gormPlanRepository) GetBasicPlanByID(id uint) (*models.Plan, error) {
|
||||
var plan models.Plan
|
||||
// GORM 默认不会加载关联,除非使用 Preload,所以直接 First 即可满足要求
|
||||
result := r.db.First(&plan, id)
|
||||
if result.Error != nil {
|
||||
return nil, result.Error
|
||||
}
|
||||
return &plan, nil
|
||||
}
|
||||
Reference in New Issue
Block a user