Files
Web-Page-Performance-Test/migrations/001_multi_run_support.sql

48 lines
1.8 KiB
SQL

-- Multi-Run Statistics Database Migration
-- Creates test_suites table and modifies test_results for multi-run support
-- Create test_suites table to group multiple test runs
CREATE TABLE IF NOT EXISTS test_suites (
id SERIAL PRIMARY KEY,
suite_id TEXT UNIQUE NOT NULL,
user_uuid TEXT NOT NULL,
url TEXT NOT NULL,
device_type TEXT,
run_count INTEGER DEFAULT 1,
completed_runs INTEGER DEFAULT 0,
status TEXT DEFAULT 'running', -- running, completed, failed
created_at TIMESTAMP DEFAULT NOW(),
completed_at TIMESTAMP,
-- Statistical results (calculated after all runs complete)
median_performance_score NUMERIC,
avg_performance_score NUMERIC,
stddev_performance_score NUMERIC,
median_lcp NUMERIC,
avg_lcp NUMERIC,
stddev_lcp NUMERIC,
median_cls NUMERIC,
avg_cls NUMERIC,
stddev_cls NUMERIC,
median_tbt NUMERIC,
avg_tbt NUMERIC,
stddev_tbt NUMERIC
);
-- Add columns to test_results for multi-run support
ALTER TABLE test_results
ADD COLUMN IF NOT EXISTS suite_id TEXT,
ADD COLUMN IF NOT EXISTS run_number INTEGER DEFAULT 1,
ADD COLUMN IF NOT EXISTS is_median BOOLEAN DEFAULT FALSE;
-- Create index for faster lookups
CREATE INDEX IF NOT EXISTS idx_suite_id ON test_results(suite_id);
CREATE INDEX IF NOT EXISTS idx_test_suites_user ON test_suites(user_uuid);
CREATE INDEX IF NOT EXISTS idx_test_suites_status ON test_suites(status);
-- Comment
COMMENT ON TABLE test_suites IS 'Groups multiple test runs for statistical analysis';
COMMENT ON COLUMN test_results.suite_id IS 'Links individual run to parent test suite';
COMMENT ON COLUMN test_results.run_number IS 'Run number within the suite (1-10)';
COMMENT ON COLUMN test_results.is_median IS 'TRUE if this run represents the median performance';