summaryrefslogtreecommitdiff
path: root/page.go
diff options
context:
space:
mode:
Diffstat (limited to 'page.go')
-rw-r--r--page.go59
1 files changed, 59 insertions, 0 deletions
diff --git a/page.go b/page.go
new file mode 100644
index 0000000..384ca57
--- /dev/null
+++ b/page.go
@@ -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
+}