Files
sori.studio/db/migrations/045_analytics_traffic_sources.sql

43 lines
1.4 KiB
SQL

CREATE TABLE IF NOT EXISTS analytics_traffic_daily (
day DATE NOT NULL,
source_group TEXT NOT NULL,
source_name TEXT NOT NULL,
device_type TEXT NOT NULL,
os_name TEXT NOT NULL,
keyword TEXT NOT NULL DEFAULT '',
page_views INTEGER NOT NULL DEFAULT 0,
visitors INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (day, source_group, source_name, device_type, os_name, keyword)
);
CREATE INDEX IF NOT EXISTS analytics_traffic_daily_day_idx
ON analytics_traffic_daily (day DESC);
CREATE INDEX IF NOT EXISTS analytics_traffic_daily_source_idx
ON analytics_traffic_daily (source_group, source_name);
ALTER TABLE analytics_daily_visitors
ADD COLUMN IF NOT EXISTS source_group TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS source_name TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS device_type TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS os_name TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS keyword TEXT NOT NULL DEFAULT '';
ALTER TABLE analytics_daily_visitors
DROP CONSTRAINT IF EXISTS analytics_daily_visitors_scope_check;
ALTER TABLE analytics_daily_visitors
ADD CONSTRAINT analytics_daily_visitors_scope_check CHECK (scope IN ('site', 'post', 'page', 'traffic'));
CREATE UNIQUE INDEX IF NOT EXISTS analytics_daily_visitors_traffic_uidx
ON analytics_daily_visitors (
day,
visitor_hash,
source_group,
source_name,
device_type,
os_name,
keyword
)
WHERE scope = 'traffic';