diff --git a/internal/chore/model/model.go b/internal/chore/model/model.go index 9e1abe8..1346c08 100644 --- a/internal/chore/model/model.go +++ b/internal/chore/model/model.go @@ -120,6 +120,7 @@ type Tag struct { type ChoreDetail struct { ID int `json:"id" gorm:"column:id"` Name string `json:"name" gorm:"column:name"` + Description *string `json:"description" gorm:"column:description"` FrequencyType string `json:"frequencyType" gorm:"column:frequency_type"` NextDueDate *time.Time `json:"nextDueDate" gorm:"column:next_due_date"` AssignedTo int `json:"assignedTo" gorm:"column:assigned_to"` diff --git a/internal/chore/repo/repository.go b/internal/chore/repo/repository.go index 3b6d124..014674e 100644 --- a/internal/chore/repo/repository.go +++ b/internal/chore/repo/repository.go @@ -70,8 +70,18 @@ func (r *ChoreRepository) GetArchivedChores(c context.Context, circleID int, use return chores, nil } func (r *ChoreRepository) DeleteChore(c context.Context, id int) error { - r.db.WithContext(c).Where("chore_id = ?", id).Delete(&chModel.ChoreAssignees{}) - return r.db.WithContext(c).Delete(&chModel.Chore{}, id).Error + return r.db.WithContext(c).Transaction(func(tx *gorm.DB) error { + if err := tx.Where("chore_id = ?", id).Delete(&chModel.ChoreAssignees{}).Error; err != nil { + return err + } + if err := tx.Delete(&chModel.ChoreHistory{}, "chore_id = ?", id).Error; err != nil { + return err + } + if err := tx.Delete(&chModel.Chore{}, id).Error; err != nil { + return err + } + return nil + }) } func (r *ChoreRepository) SoftDelete(c context.Context, id int, userID int) error { @@ -154,6 +164,9 @@ func (r *ChoreRepository) UpdateChoreHistory(c context.Context, history *chModel func (r *ChoreRepository) DeleteChoreHistory(c context.Context, historyID int) error { return r.db.WithContext(c).Delete(&chModel.ChoreHistory{}, historyID).Error } +func (r *ChoreRepository) DeleteChoreHistoryByChoreID(c context.Context, tx, choreID int) error { + return r.db.WithContext(c).Delete(&chModel.ChoreHistory{}, "chore_id = ?", choreID).Error +} func (r *ChoreRepository) UpdateChoreAssignees(c context.Context, assignees []*chModel.ChoreAssignees) error { return r.db.WithContext(c).Save(&assignees).Error @@ -264,7 +277,8 @@ func (r *ChoreRepository) GetChoreDetailByID(c context.Context, choreID int, cir Table("chores"). Select(` chores.id, - chores.name, + chores.name, + chores.description, chores.frequency_type, chores.next_due_date, chores.assigned_to,