From 82b9edb05c783b0775ac27c681d85a9455880548 Mon Sep 17 00:00:00 2001 From: Hiroaki Kobayashi Date: Thu, 12 Sep 2019 00:20:33 +0900 Subject: [PATCH] use due object --- cmd/todoist/cmd/inbox.go | 2 +- cmd/todoist/cmd/item.go | 14 ++++++------ cmd/todoist/cmd/next.go | 4 ++-- cmd/todoist/cmd/today.go | 4 ++-- todoist/item.go | 48 ++++++++++++++++++++++------------------ todoist/reminder.go | 10 ++++++--- 6 files changed, 45 insertions(+), 37 deletions(-) diff --git a/cmd/todoist/cmd/inbox.go b/cmd/todoist/cmd/inbox.go index 5fea46a..0552c4c 100644 --- a/cmd/todoist/cmd/inbox.go +++ b/cmd/todoist/cmd/inbox.go @@ -25,7 +25,7 @@ var inboxCmd = &cobra.Command{ inbox := projects[0] items := client.Item.FindByProjectIDs([]todoist.ID{inbox.ID}) relations := client.Relation.Items(items) - fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.DueDateUtc })) + fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.Due.Date })) return nil }, } diff --git a/cmd/todoist/cmd/item.go b/cmd/todoist/cmd/item.go index 8e47e81..d357ba8 100644 --- a/cmd/todoist/cmd/item.go +++ b/cmd/todoist/cmd/item.go @@ -29,7 +29,7 @@ var itemListCmd = &cobra.Command{ } items := client.Item.GetAll() relations := client.Relation.Items(items) - fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.DueDateUtc })) + fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.Due.Date })) return nil }, } @@ -78,7 +78,7 @@ var itemAddCmd = &cobra.Command{ return errors.New("invalid due date format") } if len(due) > 0 { - item.DateString = due + item.Due.String = due } priority, err := cmd.Flags().GetInt("priority") @@ -108,7 +108,7 @@ var itemAddCmd = &cobra.Command{ syncedItem := items[len(items)-1] relations := client.Relation.Items([]todoist.Item{syncedItem}) fmt.Println("Successful addition of an item.") - fmt.Println(util.ItemTableString([]todoist.Item{syncedItem}, relations, func(i todoist.Item) todoist.Time { return i.DueDateUtc })) + fmt.Println(util.ItemTableString([]todoist.Item{syncedItem}, relations, func(i todoist.Item) todoist.Time { return i.Due.Date })) return nil }, } @@ -157,7 +157,7 @@ var itemUpdateCmd = &cobra.Command{ return errors.New("invalid due date format") } if len(due) > 0 { - item.DateString = due + item.Due.String = due } priority, err := cmd.Flags().GetInt("priority") @@ -182,7 +182,7 @@ var itemUpdateCmd = &cobra.Command{ } relations := client.Relation.Items([]todoist.Item{*syncedItem}) fmt.Println("success to update the item") - fmt.Println(util.ItemTableString([]todoist.Item{*syncedItem}, relations, func(i todoist.Item) todoist.Time { return i.DueDateUtc })) + fmt.Println(util.ItemTableString([]todoist.Item{*syncedItem}, relations, func(i todoist.Item) todoist.Time { return i.Due.Date })) return nil }, } @@ -204,7 +204,7 @@ var itemDeleteCmd = &cobra.Command{ items = append(items, *item) } relations := client.Relation.Items(items) - fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.DueDateUtc })) + fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.Due.Date })) reader := bufio.NewReader(os.Stdin) fmt.Print("are you sure to delete above item(s)? (y/[n]): ") @@ -272,7 +272,7 @@ var itemMoveCmd = &cobra.Command{ } relations := client.Relation.Items([]todoist.Item{*syncedItem}) fmt.Println("Successful move item.") - fmt.Println(util.ItemTableString([]todoist.Item{*syncedItem}, relations, func(i todoist.Item) todoist.Time { return i.DueDateUtc })) + fmt.Println(util.ItemTableString([]todoist.Item{*syncedItem}, relations, func(i todoist.Item) todoist.Time { return i.Due.Date })) return nil }, } diff --git a/cmd/todoist/cmd/next.go b/cmd/todoist/cmd/next.go index d13a11f..1d68a68 100644 --- a/cmd/todoist/cmd/next.go +++ b/cmd/todoist/cmd/next.go @@ -24,10 +24,10 @@ var nextCmd = &cobra.Command{ } } sort.Slice(items, func(i, j int) bool { - return items[i].DueDateUtc.Before(items[j].DueDateUtc) + return items[i].Due.Date.Before(items[j].Due.Date) }) relations := client.Relation.Items(items) - fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.DueDateUtc })) + fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.Due.Date })) return nil }, } diff --git a/cmd/todoist/cmd/today.go b/cmd/todoist/cmd/today.go index 1566a08..043802e 100644 --- a/cmd/todoist/cmd/today.go +++ b/cmd/todoist/cmd/today.go @@ -24,10 +24,10 @@ var todayCmd = &cobra.Command{ } } sort.Slice(items, func(i, j int) bool { - return items[i].DueDateUtc.Before(items[j].DueDateUtc) + return items[i].Due.Date.Before(items[j].Due.Date) }) relations := client.Relation.Items(items) - fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.DueDateUtc })) + fmt.Println(util.ItemTableString(items, relations, func(i todoist.Item) todoist.Time { return i.Due.Date })) return nil }, } diff --git a/todoist/item.go b/todoist/item.go index 4efa514..38c1f4a 100644 --- a/todoist/item.go +++ b/todoist/item.go @@ -12,30 +12,34 @@ import ( type Item struct { Entity - UserID ID `json:"user_id,omitempty"` - ProjectID ID `json:"project_id,omitempty"` - Content string `json:"content"` - DateString string `json:"date_string,omitempty"` - DateLang string `json:"date_lang,omitempty"` - DueDateUtc Time `json:"due_date_utc,omitempty"` - Priority int `json:"priority,omitempty"` - Indent int `json:"indent,omitempty"` - ItemOrder int `json:"item_order,omitempty"` - DayOrder int `json:"day_order,omitempty"` - Collapsed int `json:"collapsed,omitempty"` - Labels []ID `json:"labels,omitempty"` - AssignedByUID ID `json:"assigned_by_uid,omitempty"` - ResponsibleUID ID `json:"responsible_uid,omitempty"` - Checked int `json:"checked,omitempty"` - InHistory int `json:"in_history,omitempty"` - IsArchived int `json:"is_archived,omitempty"` - SyncID int `json:"sync_id,omitempty"` - DateAdded Time `json:"date_added,omitempty"` - CompletedDate Time `json:"completed_date"` + UserID ID `json:"user_id,omitempty"` + ProjectID ID `json:"project_id,omitempty"` + Content string `json:"content"` + Due struct { + Date Time `json:"date"` + Timezone string `json:"timezone"` + IsRecurring bool `json:"is_recurring"` + String string `json:"string"` + Lang string `json:"lang"` + } `json:"due,omitempty"` + Priority int `json:"priority,omitempty"` + Indent int `json:"indent,omitempty"` + ItemOrder int `json:"item_order,omitempty"` + DayOrder int `json:"day_order,omitempty"` + Collapsed int `json:"collapsed,omitempty"` + Labels []ID `json:"labels,omitempty"` + AssignedByUID ID `json:"assigned_by_uid,omitempty"` + ResponsibleUID ID `json:"responsible_uid,omitempty"` + Checked int `json:"checked,omitempty"` + InHistory int `json:"in_history,omitempty"` + IsArchived int `json:"is_archived,omitempty"` + SyncID int `json:"sync_id,omitempty"` + DateAdded Time `json:"date_added,omitempty"` + CompletedDate Time `json:"completed_date"` } func (i Item) IsOverDueDate() bool { - return i.DueDateUtc.Before(Time{time.Now().UTC()}) + return i.Due.Date.Before(Time{time.Now().UTC()}) } func (i Item) IsChecked() bool { @@ -232,7 +236,7 @@ func (c ItemClient) FindByContent(substr string) []Item { func (c ItemClient) FindByDueDate(time Time) []Item { var res []Item for _, i := range c.GetAll() { - if !i.DueDateUtc.IsZero() && i.DueDateUtc.Before(time) { + if !i.Due.Date.IsZero() && i.Due.Date.Before(time) { res = append(res, i) } } diff --git a/todoist/reminder.go b/todoist/reminder.go index 9052408..f3e3a24 100644 --- a/todoist/reminder.go +++ b/todoist/reminder.go @@ -6,9 +6,13 @@ type Reminder struct { ItemID ID `json:"item_id"` Service string `json:"service"` Type string `json:"type"` - DateString string `json:"date_string"` - DateLang string `json:"date_lang"` - DueDateUtc Time `json:"due_date_utc"` + Due struct { + Date Time `json:"date"` + Timezone string `json:"timezone"` + IsRecurring bool `json:"is_recurring"` + String string `json:"string"` + Lang string `json:"lang"` + } `json:"due"` MmOffset int `json:"mm_offset"` Name string `json:"name"` LocLat string `json:"loc_lat"`