diff options
Diffstat (limited to 'internal/store')
| -rw-r--r-- | internal/store/sqlite.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/internal/store/sqlite.go b/internal/store/sqlite.go index a9a0597..12aa1ce 100644 --- a/internal/store/sqlite.go +++ b/internal/store/sqlite.go @@ -3,6 +3,7 @@ package store import ( "database/sql" "encoding/json" + "errors" "fmt" "log" "os" @@ -11,6 +12,7 @@ import ( "time" _ "github.com/mattn/go-sqlite3" + "task-dashboard/internal/models" ) @@ -169,8 +171,12 @@ func (s *Store) SaveTasks(tasks []models.Task) error { defer func() { _ = stmt.Close() }() for _, task := range tasks { - labelsJSON, _ := json.Marshal(task.Labels) - _, err := stmt.Exec( + labelsJSON, err := json.Marshal(task.Labels) + if err != nil { + log.Printf("Warning: failed to marshal labels for task %s: %v", task.ID, err) + labelsJSON = []byte("[]") + } + _, err = stmt.Exec( task.ID, task.Content, task.Description, @@ -213,8 +219,12 @@ func (s *Store) DeleteTask(id string) error { // UpsertTask inserts or updates a single task func (s *Store) UpsertTask(task models.Task) error { - labelsJSON, _ := json.Marshal(task.Labels) - _, err := s.db.Exec(` + labelsJSON, err := json.Marshal(task.Labels) + if err != nil { + log.Printf("Warning: failed to marshal labels for task %s: %v", task.ID, err) + labelsJSON = []byte("[]") + } + _, err = s.db.Exec(` INSERT OR REPLACE INTO tasks (id, content, description, project_id, project_name, due_date, priority, completed, labels, url, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP) @@ -344,7 +354,7 @@ func (s *Store) GetCacheMetadata(key string) (*models.CacheMetadata, error) { WHERE key = ? `, key).Scan(&cm.Key, &cm.LastFetch, &cm.TTLMinutes) - if err == sql.ErrNoRows { + if errors.Is(err, sql.ErrNoRows) { return nil, nil } if err != nil { @@ -552,7 +562,7 @@ func (s *Store) DeleteCard(id string) error { func (s *Store) GetSyncToken(service string) (string, error) { var token string err := s.db.QueryRow(`SELECT token FROM sync_tokens WHERE service = ?`, service).Scan(&token) - if err == sql.ErrNoRows { + if errors.Is(err, sql.ErrNoRows) { return "", nil } if err != nil { |
