updates
This commit is contained in:
56
server/internal/models/todo.go
Normal file
56
server/internal/models/todo.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func (Todo) TableName() string {
|
||||
return "todos"
|
||||
}
|
||||
|
||||
type Todo struct {
|
||||
BaseModel
|
||||
UserID ULID `json:"userId" db:"user_id" gorm:"not null"`
|
||||
Title string `json:"title" db:"title" gorm:"not null"`
|
||||
Description string `json:"description" db:"description"`
|
||||
Color string `json:"color" db:"color" gorm:"default:'#3B82F6'"` // Default blue color
|
||||
IsActive bool `json:"isActive" db:"is_active" gorm:"default:true"`
|
||||
|
||||
// Relationships
|
||||
User User `json:"user" gorm:"foreignKey:UserID"`
|
||||
Completions []TodoCompletion `json:"completions" gorm:"foreignKey:TodoID"`
|
||||
}
|
||||
|
||||
func (TodoCompletion) TableName() string {
|
||||
return "todo_completions"
|
||||
}
|
||||
|
||||
type TodoCompletion struct {
|
||||
BaseModel
|
||||
TodoID ULID `json:"todoId" db:"todo_id" gorm:"not null"`
|
||||
UserID ULID `json:"userId" db:"user_id" gorm:"not null"`
|
||||
CompletedAt time.Time `json:"completedAt" db:"completed_at" gorm:"not null"`
|
||||
Description string `json:"description" db:"description"` // User's notes about how they completed it
|
||||
|
||||
// Relationships
|
||||
Todo Todo `json:"todo" gorm:"foreignKey:TodoID"`
|
||||
User User `json:"user" gorm:"foreignKey:UserID"`
|
||||
}
|
||||
|
||||
// TodoWithStats represents a todo with completion statistics
|
||||
type TodoWithStats struct {
|
||||
Todo
|
||||
CurrentStreak int `json:"currentStreak"`
|
||||
LongestStreak int `json:"longestStreak"`
|
||||
TotalCompletions int `json:"totalCompletions"`
|
||||
LastCompletedAt *time.Time `json:"lastCompletedAt"`
|
||||
CompletedToday bool `json:"completedToday"`
|
||||
}
|
||||
|
||||
// DailyTodoSummary represents todos for a specific day
|
||||
type DailyTodoSummary struct {
|
||||
Date time.Time `json:"date"`
|
||||
Todos []TodoWithStats `json:"todos"`
|
||||
CompletedCount int `json:"completedCount"`
|
||||
TotalCount int `json:"totalCount"`
|
||||
}
|
||||
Reference in New Issue
Block a user