diff options
Diffstat (limited to 'internal/store')
| -rw-r--r-- | internal/store/sqlite.go | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/internal/store/sqlite.go b/internal/store/sqlite.go index f4651bb..3879395 100644 --- a/internal/store/sqlite.go +++ b/internal/store/sqlite.go @@ -1222,8 +1222,8 @@ func (s *Store) SaveCompletedTask(source, sourceID, title string, dueDate *time. } _, err := s.db.Exec(` INSERT OR REPLACE INTO completed_tasks (source, source_id, title, due_date, completed_at) - VALUES (?, ?, ?, ?, datetime('now', 'localtime')) - `, source, sourceID, title, dueDateStr) + VALUES (?, ?, ?, ?, ?) + `, source, sourceID, title, dueDateStr, time.Now()) return err } @@ -1244,9 +1244,9 @@ func (s *Store) GetCompletedTasks(limit int) ([]models.CompletedTask, error) { for rows.Next() { var task models.CompletedTask var dueDate sql.NullString - var completedAt time.Time + var completedAtStr string - if err := rows.Scan(&task.ID, &task.Source, &task.SourceID, &task.Title, &dueDate, &completedAt); err != nil { + if err := rows.Scan(&task.ID, &task.Source, &task.SourceID, &task.Title, &dueDate, &completedAtStr); err != nil { return nil, err } @@ -1255,6 +1255,27 @@ func (s *Store) GetCompletedTasks(limit int) ([]models.CompletedTask, error) { task.DueDate = &t } } + + // Try different formats for completedAt + formats := []string{ + "2006-01-02 15:04:05.999999999-07:00", + "2006-01-02 15:04:05", + time.RFC3339, + } + var completedAt time.Time + var parseErr error + for _, f := range formats { + if t, err := time.Parse(f, completedAtStr); err == nil { + completedAt = t + parseErr = nil + break + } else { + parseErr = err + } + } + if parseErr != nil { + log.Printf("Warning: failed to parse completed_at %q: %v", completedAtStr, parseErr) + } task.CompletedAt = completedAt tasks = append(tasks, task) |
