Version:0.0.5.dev.260204

feat: 🏗️ 完成任务分类创建与列表查询接口并通过测试

- 历经复杂嵌套逻辑处理 🌀
- 实现创建任务分类接口 
- 实现获取任务分类列表接口 📋
- 接口测试全部通过 🧪

perf: 🚀 下个版本将为任务分类列表接口加入 Redis 缓存以提升查询速度 
This commit is contained in:
LoveLosita
2026-02-04 19:26:22 +08:00
parent f554d9bd06
commit af8e8bd804
8 changed files with 384 additions and 6 deletions

49
backend/dao/task-class.go Normal file
View File

@@ -0,0 +1,49 @@
package dao
import (
"github.com/LoveLosita/smartflow/backend/model"
"gorm.io/gorm"
)
type TaskClassDAO struct {
// 这是一个口袋,用来装数据库连接实例
db *gorm.DB
}
// NewTaskClassDAO 创建TaskClassDAO实例
// NewTaskClassDAO 接收一个 *gorm.DB并把它塞进结构体的口袋里
func NewTaskClassDAO(db *gorm.DB) *TaskClassDAO {
return &TaskClassDAO{
db: db,
}
}
// AddTaskClass 为指定用户添加任务类
func (dao *TaskClassDAO) AddTaskClass(taskClass *model.TaskClass) (int, error) {
err := dao.db.Create(taskClass).Error
if err != nil {
return 0, err
}
return taskClass.ID, nil
}
func (dao *TaskClassDAO) AddTaskClassItems(items []model.TaskClassItem) error {
return dao.db.Create(&items).Error
}
// Transaction 在一个事务中执行传入的函数,供 service 层复用(自动提交/回滚)
// 规则fn 返回 nil -> commitfn 返回 error 或 panic -> rollback
func (dao *TaskClassDAO) Transaction(fn func(txDAO *TaskClassDAO) error) error {
return dao.db.Transaction(func(tx *gorm.DB) error {
return fn(NewTaskClassDAO(tx))
})
}
func (dao *TaskClassDAO) GetUserTaskClasses(userID int) ([]model.TaskClass, error) {
var taskClasses []model.TaskClass
err := dao.db.Where("user_id = ?", userID).Find(&taskClasses).Error
if err != nil {
return nil, err
}
return taskClasses, nil
}