diff --git a/backend/internal/domain/discovery/repository.go b/backend/internal/domain/discovery/repository.go index c4c4617..8104bf1 100644 --- a/backend/internal/domain/discovery/repository.go +++ b/backend/internal/domain/discovery/repository.go @@ -57,7 +57,7 @@ LIMIT $2` return nil, fmt.Errorf("pick buckets: %w", err) } defer rows.Close() - var out []Bucket + out := make([]Bucket, 0) for rows.Next() { var b Bucket if err := rows.Scan(&b.ID, &b.Land, &b.Region, &b.YearMonth, &b.LastQueriedAt, &b.LastError, &b.CreatedAt); err != nil { @@ -89,7 +89,7 @@ func (r *pgRepository) ListSeriesByCity(ctx context.Context, cityNormalized stri return nil, err } defer rows.Close() - var out []SeriesCandidate + out := make([]SeriesCandidate, 0) for rows.Next() { var c SeriesCandidate if err := rows.Scan(&c.ID, &c.Name, &c.City); err != nil { @@ -155,7 +155,7 @@ LIMIT $2 OFFSET $3`, status, limit, offset) return nil, err } defer rows.Close() - var out []DiscoveredMarket + out := make([]DiscoveredMarket, 0) for rows.Next() { var d DiscoveredMarket if err := rows.Scan( @@ -249,6 +249,7 @@ LIMIT $1`, recentErrorsLimit) return Stats{}, fmt.Errorf("stats recent_errors: %w", err) } defer rows.Close() + s.RecentErrors = make([]BucketError, 0) for rows.Next() { var e BucketError if err := rows.Scan(&e.Land, &e.Region, &e.YearMonth, &e.LastError, &e.LastQueriedAt); err != nil { diff --git a/web/src/routes/admin/discovery/+page.svelte b/web/src/routes/admin/discovery/+page.svelte index f028760..889a93c 100644 --- a/web/src/routes/admin/discovery/+page.svelte +++ b/web/src/routes/admin/discovery/+page.svelte @@ -2,6 +2,10 @@ import { enhance } from '$app/forms'; let { data } = $props(); + // Coalesce nullable list fields (Go encodes nil slices as null). + const queue = $derived(data.queue ?? []); + const recentErrors = $derived(data.stats.recent_errors ?? []); + const lastTickLabel = $derived.by(() => { if (!data.stats.last_tick_at) return 'nie'; const ts = new Date(data.stats.last_tick_at).getTime(); @@ -64,16 +68,16 @@ - {#if data.stats.recent_errors && data.stats.recent_errors.length > 0} + {#if recentErrors.length > 0}
- {data.stats.recent_errors.length} bucket{data.stats.recent_errors.length === 1 ? '' : 's'} + {recentErrors.length} bucket{recentErrors.length === 1 ? '' : 's'} with errors