diff options
Diffstat (limited to 'page.go')
-rw-r--r-- | page.go | 59 |
1 files changed, 59 insertions, 0 deletions
@@ -0,0 +1,59 @@ +package main + +type Service struct { + Db Database +} + +type EntryPage struct { + Task *Task + Detached bool + Tracking *Task +} + +type RootPage struct { + Entry *EntryPage + Tasks []*Task +} + +func NewService(db Database) *Service { + return &Service { + Db: db, + } +} + +func (srv *Service) GetEntryPage(detached *Task) (*EntryPage, error) { + tracking, err := srv.Db.GetTracking() + if err != nil { + return nil, err + } + + page := &EntryPage { + Task: tracking, + Detached: false, + Tracking: tracking, + } + + if detached != nil { + page.Task = detached + page.Detached = true + } + + + return page, nil +} + +func (srv *Service) GetRootPage() (*RootPage, error) { + entry, err := srv.GetEntryPage(nil) + if err != nil { + return nil, err + } + tasks, err := srv.Db.GetTasks() + if err != nil { + return nil, err + } + + return &RootPage { + Entry: entry, + Tasks: tasks, + }, nil +} |