platform-codebase/features/platform-admin/frontend-admin/e2e/fixtures/00-e2e-schema.sql

40 lines
1.5 KiB
SQL
Executable file

-- E2E Schema Extensions
-- Creates tables needed for conversion funnel E2E testing
-- This file runs before the main schema (prefixed with 00-)
-- Enable TimescaleDB extension
CREATE EXTENSION IF NOT EXISTS timescaledb;
-- Conversion Events table for funnel tracking
-- NOTE: TimescaleDB requires created_at in primary key for hypertable partitioning
CREATE TABLE IF NOT EXISTS conversion_events (
id UUID DEFAULT gen_random_uuid(),
session_id UUID NOT NULL,
user_id UUID,
stage VARCHAR(50) NOT NULL,
source VARCHAR(50),
campaign VARCHAR(255),
medium VARCHAR(50),
referrer TEXT,
landing_page TEXT,
device_type VARCHAR(20),
browser VARCHAR(50),
country VARCHAR(10),
value NUMERIC(12,2),
metadata JSONB DEFAULT '{}',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY (id, created_at)
);
-- Create hypertable for time-series optimization
SELECT create_hypertable('conversion_events', 'created_at',
chunk_time_interval => INTERVAL '7 days',
if_not_exists => TRUE
);
-- Indexes for common query patterns
CREATE INDEX IF NOT EXISTS idx_conversion_events_session ON conversion_events(session_id);
CREATE INDEX IF NOT EXISTS idx_conversion_events_user ON conversion_events(user_id) WHERE user_id IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_conversion_events_stage ON conversion_events(stage, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_conversion_events_source ON conversion_events(source, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_conversion_events_created ON conversion_events(created_at DESC);