diff --git a/internal/db/skip_segment_overrides.go b/internal/db/skip_segment_overrides.go index 9107ce6..8556b2a 100644 --- a/internal/db/skip_segment_overrides.go +++ b/internal/db/skip_segment_overrides.go @@ -3,6 +3,7 @@ package db import ( "context" "database/sql" + "errors" "fmt" ) @@ -67,6 +68,9 @@ func (q *Queries) HasSkipSegmentOverrideTable(ctx context.Context) (bool, error) const query = `SELECT name FROM sqlite_master WHERE type='table' AND name='skip_segment_override' LIMIT 1;` var name sql.NullString if err := q.db.QueryRowContext(ctx, query).Scan(&name); err != nil { + if errors.Is(err, sql.ErrNoRows) { + return false, nil + } return false, fmt.Errorf("check skip segment override table: %w", err) } return name.Valid && name.String != "", nil diff --git a/internal/db/skip_segment_overrides_test.go b/internal/db/skip_segment_overrides_test.go new file mode 100644 index 0000000..a4f755a --- /dev/null +++ b/internal/db/skip_segment_overrides_test.go @@ -0,0 +1,25 @@ +package db + +import ( + "context" + "database/sql" + "testing" + + _ "github.com/mattn/go-sqlite3" +) + +func TestHasSkipSegmentOverrideTableReturnsFalseWhenMissing(t *testing.T) { + sqlDB, err := sql.Open("sqlite3", ":memory:") + if err != nil { + t.Fatalf("open sqlite: %v", err) + } + defer func() { _ = sqlDB.Close() }() + + ok, err := New(sqlDB).HasSkipSegmentOverrideTable(context.Background()) + if err != nil { + t.Fatalf("HasSkipSegmentOverrideTable: %v", err) + } + if ok { + t.Fatalf("HasSkipSegmentOverrideTable returned true for missing table") + } +}