diff --git a/infra/migrations/021_seed_saved_queries.sql b/infra/migrations/021_seed_saved_queries.sql index c06bc63..d03b44c 100644 --- a/infra/migrations/021_seed_saved_queries.sql +++ b/infra/migrations/021_seed_saved_queries.sql @@ -1,4 +1,11 @@ -- Seed pre-built saved queries for the SQL Explorer +-- Add unique constraint on name to prevent duplicates on re-run +DO $$ BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'saved_queries_name_key') THEN + ALTER TABLE saved_queries ADD CONSTRAINT saved_queries_name_key UNIQUE (name); + END IF; +END $$; + INSERT INTO saved_queries (name, description, sql_text) VALUES ('Company Overview', 'All tracked companies with sector and status', 'SELECT ticker, legal_name, sector, active, created_at FROM companies ORDER BY ticker'), @@ -35,4 +42,4 @@ INSERT INTO saved_queries (name, description, sql_text) VALUES ('Source Coverage Matrix', 'Active sources per company', 'SELECT c.ticker, c.legal_name, count(*) FILTER (WHERE s.source_type = ''market_api'') AS market, count(*) FILTER (WHERE s.source_type = ''news_api'') AS news, count(*) FILTER (WHERE s.source_type = ''filings_api'') AS filings, count(*) AS total FROM companies c LEFT JOIN sources s ON c.id = s.company_id AND s.active = TRUE WHERE c.active = TRUE GROUP BY c.ticker, c.legal_name ORDER BY c.ticker') -ON CONFLICT DO NOTHING; +ON CONFLICT (name) DO NOTHING;