diff options
Diffstat (limited to 'internal/models/atom.go')
| -rw-r--r-- | internal/models/atom.go | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/internal/models/atom.go b/internal/models/atom.go index 10d14d1..3e08896 100644 --- a/internal/models/atom.go +++ b/internal/models/atom.go @@ -1,6 +1,9 @@ package models -import "time" +import ( + "fmt" + "time" +) type AtomSource string @@ -8,6 +11,7 @@ const ( SourceTrello AtomSource = "trello" SourceTodoist AtomSource = "todoist" SourceMeal AtomSource = "plantoeat" + SourceBug AtomSource = "bug" ) type AtomType string @@ -16,6 +20,7 @@ const ( TypeTask AtomType = "task" TypeNote AtomType = "note" TypeMeal AtomType = "meal" + TypeBug AtomType = "bug" ) // Atom represents a unified unit of work or information @@ -34,11 +39,12 @@ type Atom struct { Priority int // Normalized: 1 (Low) to 4 (Urgent) // UI Helpers (to be populated by mappers) - SourceIcon string // e.g., "trello-icon.svg" or emoji - ColorClass string // e.g., "border-blue-500" - IsOverdue bool // True if due date is before today - IsFuture bool // True if due date is after today - HasSetTime bool // True if due time is not midnight (has specific time) + SourceIcon string // e.g., "trello-icon.svg" or emoji + ColorClass string // e.g., "border-blue-500" + IsOverdue bool // True if due date is before today + IsFuture bool // True if due date is after today + HasSetTime bool // True if due time is not midnight (has specific time) + IsRecurring bool // True if this is a recurring task // Original Data (for write operations) Raw interface{} @@ -89,6 +95,7 @@ func TaskToAtom(t Task) Atom { Priority: priority, SourceIcon: "🔴", // Red circle for Todoist ColorClass: "border-red-500", + IsRecurring: t.IsRecurring, Raw: t, } } @@ -135,3 +142,24 @@ func MealToAtom(m Meal) Atom { Raw: m, } } + +// BugToAtom converts a Bug to an Atom +func BugToAtom(b Bug) Atom { + // Bugs get high priority (3) to encourage fixing + priority := 3 + + return Atom{ + ID: fmt.Sprintf("bug-%d", b.ID), + Title: b.Description, + Description: "Bug Report", + Source: SourceBug, + Type: TypeBug, + URL: "", + DueDate: nil, // Bugs don't have due dates + CreatedAt: b.CreatedAt, + Priority: priority, + SourceIcon: "🐛", + ColorClass: "border-red-700", + Raw: b, + } +} |
