fabro/lib/foundation/fabro-db/migrations/2026071103_automations.sql
2026-07-23 17:59:34 -04:00

34 lines
1.2 KiB
SQL

CREATE TABLE automations (
id TEXT PRIMARY KEY NOT NULL,
revision TEXT NOT NULL,
name TEXT NOT NULL,
description TEXT,
api_enabled INTEGER NOT NULL,
target_repository TEXT NOT NULL,
target_ref TEXT NOT NULL,
target_workflow TEXT NOT NULL,
CHECK (length(id) BETWEEN 1 AND 63),
CHECK (substr(id, 1, 1) GLOB '[a-z0-9]'),
CHECK (id NOT GLOB '*[^a-z0-9-]*'),
CHECK (length(revision) = 64),
CHECK (revision NOT GLOB '*[^0-9a-f]*'),
CHECK (length(trim(name)) > 0),
CHECK (api_enabled IN (0, 1)),
CHECK (length(target_repository) BETWEEN 3 AND 140),
CHECK (length(target_ref) BETWEEN 1 AND 255),
CHECK (length(target_workflow) BETWEEN 1 AND 255)
);
CREATE TABLE automation_triggers (
automation_id TEXT NOT NULL,
id TEXT NOT NULL,
enabled INTEGER NOT NULL,
expression TEXT NOT NULL,
PRIMARY KEY (automation_id, id),
FOREIGN KEY (automation_id) REFERENCES automations(id) ON DELETE CASCADE,
CHECK (length(id) BETWEEN 1 AND 63),
CHECK (substr(id, 1, 1) GLOB '[a-z0-9]'),
CHECK (id NOT GLOB '*[^a-z0-9_-]*'),
CHECK (enabled IN (0, 1)),
CHECK (length(trim(expression)) > 0)
);