feat: initial lifelog project
- 待办事项(支持优先级、截止日期) - 每日记录(上午/下午/晚上分条目) - Go后端 + Gin + GORM + MySQL - React前端 + TailwindCSS
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"lifelog/internal/model"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type TodoRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewTodoRepository(db *gorm.DB) *TodoRepository {
|
||||
return &TodoRepository{db: db}
|
||||
}
|
||||
|
||||
func (r *TodoRepository) GetAll() ([]model.Todo, error) {
|
||||
var todos []model.Todo
|
||||
err := r.db.Order("priority asc, created_at desc").Find(&todos).Error
|
||||
return todos, err
|
||||
}
|
||||
|
||||
func (r *TodoRepository) Create(todo *model.Todo) error {
|
||||
return r.db.Create(todo).Error
|
||||
}
|
||||
|
||||
func (r *TodoRepository) Update(todo *model.Todo) error {
|
||||
return r.db.Save(todo).Error
|
||||
}
|
||||
|
||||
func (r *TodoRepository) Delete(id uint64) error {
|
||||
return r.db.Delete(&model.Todo{}, id).Error
|
||||
}
|
||||
|
||||
func (r *TodoRepository) GetByID(id uint64) (*model.Todo, error) {
|
||||
var todo model.Todo
|
||||
err := r.db.First(&todo, id).Error
|
||||
return &todo, err
|
||||
}
|
||||
|
||||
type DailyLogRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewDailyLogRepository(db *gorm.DB) *DailyLogRepository {
|
||||
return &DailyLogRepository{db: db}
|
||||
}
|
||||
|
||||
func (r *DailyLogRepository) GetByDate(date string) (*model.DailyLog, error) {
|
||||
var log model.DailyLog
|
||||
err := r.db.Where("date = ?", date).First(&log).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil, nil
|
||||
}
|
||||
return &log, err
|
||||
}
|
||||
|
||||
func (r *DailyLogRepository) GetRecent(limit int) ([]model.DailyLog, error) {
|
||||
var logs []model.DailyLog
|
||||
err := r.db.Order("date desc").Limit(limit).Find(&logs).Error
|
||||
return logs, err
|
||||
}
|
||||
|
||||
func (r *DailyLogRepository) Upsert(log *model.DailyLog) error {
|
||||
var existing model.DailyLog
|
||||
err := r.db.Where("date = ?", log.Date).First(&existing).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return r.db.Create(log).Error
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// 更新已有记录
|
||||
existing.Morning = log.Morning
|
||||
existing.Afternoon = log.Afternoon
|
||||
existing.Evening = log.Evening
|
||||
return r.db.Save(&existing).Error
|
||||
}
|
||||
Reference in New Issue
Block a user