From c453f1582add3880be454e5285aefcbca899d6da Mon Sep 17 00:00:00 2001 From: Micheal Wilkinson Date: Tue, 17 Mar 2026 23:27:17 +0000 Subject: [PATCH] Implement get notes --- internal/store/sqlite/sqlite.go | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/internal/store/sqlite/sqlite.go b/internal/store/sqlite/sqlite.go index cd2fc1f..414086a 100644 --- a/internal/store/sqlite/sqlite.go +++ b/internal/store/sqlite/sqlite.go @@ -22,6 +22,10 @@ type SQLiteStore struct { write *sql.DB } +type scannable interface { + Scan(dest ...any) error +} + func NewSQLiteStore(ctx context.Context, dbPath string) (*SQLiteStore, error) { sqliteDB := &SQLiteStore{} @@ -129,7 +133,26 @@ func (s *SQLiteStore) GetNoteByID(ctx context.Context, id int) (models.Note, err } func (s *SQLiteStore) GetAllNotes(ctx context.Context) ([]models.Note, error) { - return nil, fmt.Errorf("not implemented") + rows, err := s.read.QueryContext(ctx, ` + SELECT id, content, last_update FROM notes ORDER BY last_update DESC; + `) + if err != nil { + return nil, fmt.Errorf("failed to query all notes: %w", err) + } + defer rows.Close() + + var notes []models.Note + for rows.Next() { + note, err := s.scanNote(rows) + if err != nil { + return nil, fmt.Errorf("failed to scan note: %w", err) + } + notes = append(notes, note) + } + if err := rows.Err(); err != nil { + return nil, fmt.Errorf("error iterating over notes: %w", err) + } + return notes, nil } func (s *SQLiteStore) validateSchema(ctx context.Context) error { @@ -151,7 +174,7 @@ func (s *SQLiteStore) getWriteTransaction(ctx context.Context) (*sql.Tx, error) return tx, nil } -func (s *SQLiteStore) scanNote(results *sql.Row) (models.Note, error) { +func (s *SQLiteStore) scanNote(results scannable) (models.Note, error) { var note models.Note err := results.Scan(¬e.ID, ¬e.Content, ¬e.LastUpdate) if err != nil {