Files
zarinpal-analytics-backend/migrations/000009_ranked_campaign_calendar.sql

28 lines
1.5 KiB
SQL

ALTER TABLE calendar_events
ADD COLUMN IF NOT EXISTS occasion_key text,
ADD COLUMN IF NOT EXISTS event_variant text NOT NULL DEFAULT 'PRIMARY',
ADD COLUMN IF NOT EXISTS aliases jsonb NOT NULL DEFAULT '[]'::jsonb,
ADD COLUMN IF NOT EXISTS themes jsonb NOT NULL DEFAULT '[]'::jsonb,
ADD COLUMN IF NOT EXISTS campaign_tags jsonb NOT NULL DEFAULT '[]'::jsonb,
ADD COLUMN IF NOT EXISTS importance_bps integer;
-- statement-break
UPDATE calendar_events
SET occasion_key = coalesce(occasion_key,event_key),
importance_bps = coalesce(importance_bps,0)
WHERE occasion_key IS NULL OR importance_bps IS NULL;
-- statement-break
ALTER TABLE calendar_events
ALTER COLUMN occasion_key SET NOT NULL,
ALTER COLUMN importance_bps SET DEFAULT 0,
ALTER COLUMN importance_bps SET NOT NULL,
ADD CONSTRAINT calendar_events_importance_bps_check CHECK (importance_bps BETWEEN 0 AND 10000),
ADD CONSTRAINT calendar_events_variant_check CHECK (event_variant IN ('PRIMARY','CAMPAIGN_WINDOW','OPERATIONAL_WINDOW'));
-- statement-break
CREATE UNIQUE INDEX IF NOT EXISTS calendar_events_canonical_occurrence_idx
ON calendar_events (catalog_version_id, occasion_key, event_variant, start_date, end_date);
-- statement-break
CREATE INDEX IF NOT EXISTS calendar_events_ranked_context_idx
ON calendar_events (catalog_version_id, importance_bps DESC, relevance_bps DESC, start_date);
-- statement-break
INSERT INTO schema_migrations(version) VALUES (9) ON CONFLICT DO NOTHING;