127 lines
3.5 KiB
JavaScript
127 lines
3.5 KiB
JavaScript
"use strict";
|
|
/**
|
|
* ABE Database Migrations
|
|
* Creates all tables if they do not exist.
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.runMigrations = runMigrations;
|
|
function runMigrations(db) {
|
|
db.exec(`
|
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
id TEXT PRIMARY KEY,
|
|
url TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'running',
|
|
seed INTEGER NOT NULL,
|
|
max_states INTEGER NOT NULL DEFAULT 50,
|
|
states_visited INTEGER NOT NULL DEFAULT 0,
|
|
anomalies_found INTEGER NOT NULL DEFAULT 0,
|
|
started_at INTEGER NOT NULL,
|
|
finished_at INTEGER,
|
|
config_json TEXT NOT NULL DEFAULT '{}'
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS states (
|
|
id TEXT PRIMARY KEY,
|
|
session_id TEXT NOT NULL REFERENCES sessions(id),
|
|
url TEXT NOT NULL,
|
|
title TEXT NOT NULL,
|
|
dom_snapshot_path TEXT,
|
|
visit_count INTEGER NOT NULL DEFAULT 0,
|
|
discovered_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS actions (
|
|
id TEXT PRIMARY KEY,
|
|
session_id TEXT NOT NULL REFERENCES sessions(id),
|
|
state_id TEXT NOT NULL REFERENCES states(id),
|
|
type TEXT NOT NULL,
|
|
selector TEXT,
|
|
value TEXT,
|
|
url TEXT,
|
|
seed INTEGER NOT NULL,
|
|
executed_at INTEGER NOT NULL,
|
|
sequence_order INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS anomalies (
|
|
id TEXT PRIMARY KEY,
|
|
session_id TEXT NOT NULL REFERENCES sessions(id),
|
|
type TEXT NOT NULL,
|
|
severity TEXT NOT NULL,
|
|
description TEXT NOT NULL,
|
|
action_trace_json TEXT NOT NULL,
|
|
evidence_json TEXT NOT NULL,
|
|
screenshot_path TEXT,
|
|
dom_snapshot_path TEXT,
|
|
detected_at INTEGER NOT NULL,
|
|
ai_enrichment_json TEXT,
|
|
ai_enriched_at INTEGER,
|
|
browser TEXT,
|
|
browser_version TEXT
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS notifications (
|
|
id TEXT PRIMARY KEY,
|
|
anomaly_id TEXT NOT NULL REFERENCES anomalies(id),
|
|
channel TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
sent_at INTEGER,
|
|
error TEXT
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS schedules (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
url TEXT NOT NULL,
|
|
config_json TEXT NOT NULL,
|
|
cron_expression TEXT NOT NULL,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
last_run_at INTEGER,
|
|
next_run_at INTEGER,
|
|
created_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS visual_baselines (
|
|
id TEXT PRIMARY KEY,
|
|
state_id TEXT NOT NULL,
|
|
url TEXT NOT NULL,
|
|
screenshot_path TEXT NOT NULL,
|
|
approved_at INTEGER NOT NULL,
|
|
approved_by TEXT DEFAULT 'user',
|
|
width INTEGER NOT NULL,
|
|
height INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS visual_comparisons (
|
|
id TEXT PRIMARY KEY,
|
|
session_id TEXT NOT NULL,
|
|
state_id TEXT NOT NULL,
|
|
baseline_id TEXT,
|
|
current_screenshot_path TEXT NOT NULL,
|
|
diff_screenshot_path TEXT,
|
|
diff_pixels INTEGER,
|
|
diff_percent REAL,
|
|
status TEXT NOT NULL,
|
|
created_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS performance_metrics (
|
|
id TEXT PRIMARY KEY,
|
|
session_id TEXT NOT NULL,
|
|
state_id TEXT NOT NULL,
|
|
url TEXT NOT NULL,
|
|
ttfb INTEGER,
|
|
dom_content_loaded INTEGER,
|
|
load_complete INTEGER,
|
|
lcp INTEGER,
|
|
cls REAL,
|
|
fid INTEGER,
|
|
inp INTEGER,
|
|
total_requests INTEGER,
|
|
failed_requests INTEGER,
|
|
total_transfer_size INTEGER,
|
|
captured_at INTEGER NOT NULL
|
|
);
|
|
`);
|
|
}
|