CREATE TABLE IF NOT EXISTS trigger_groups (
group_id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT NOT NULL,
enabled INTEGER NOT NULL CHECK (enabled IN (0, 1)),
revision INTEGER NOT NULL,
created_by TEXT NOT NULL,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
migrated INTEGER NOT NULL DEFAULT 0 CHECK (migrated IN (0, 1))
);
CREATE TABLE IF NOT EXISTS trigger_definitions (
trigger_id TEXT PRIMARY KEY,
group_id TEXT NOT NULL REFERENCES trigger_groups(group_id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT NOT NULL,
enabled INTEGER NOT NULL CHECK (enabled IN (0, 1)),
mode TEXT NOT NULL CHECK (mode IN ('VISUAL', 'CODE')),
event_json TEXT NOT NULL,
condition_mode TEXT NOT NULL CHECK (condition_mode IN ('ALL', 'ANY')),
conditions_json TEXT NOT NULL,
actions_json TEXT NOT NULL,
script TEXT NOT NULL,
revision INTEGER NOT NULL,
created_by TEXT NOT NULL,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
migrated INTEGER NOT NULL DEFAULT 0 CHECK (migrated IN (0, 1))
);
CREATE INDEX IF NOT EXISTS trigger_definitions_group_idx
ON trigger_definitions(group_id, updated_at DESC);
CREATE TABLE IF NOT EXISTS trigger_runtime_state (
trigger_id TEXT NOT NULL REFERENCES trigger_definitions(trigger_id) ON DELETE CASCADE,
state_key TEXT NOT NULL,
state_value TEXT NOT NULL,
updated_at INTEGER NOT NULL,
PRIMARY KEY(trigger_id, state_key)
);
CREATE TABLE IF NOT EXISTS trigger_migrations (
migration_key TEXT PRIMARY KEY,
applied_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS trigger_groups (
group_id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT NOT NULL,
enabled INTEGER NOT NULL CHECK (enabled IN (0, 1)),
revision INTEGER NOT NULL,
created_by TEXT NOT NULL,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
migrated INTEGER NOT NULL DEFAULT 0 CHECK (migrated IN (0, 1))
);
CREATE TABLE IF NOT EXISTS trigger_definitions (
trigger_id TEXT PRIMARY KEY,
group_id TEXT NOT NULL REFERENCES trigger_groups(group_id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT NOT NULL,
enabled INTEGER NOT NULL CHECK (enabled IN (0, 1)),
mode TEXT NOT NULL CHECK (mode IN ('VISUAL', 'CODE')),
event_json TEXT NOT NULL,
condition_mode TEXT NOT NULL CHECK (condition_mode IN ('ALL', 'ANY')),
conditions_json TEXT NOT NULL,
actions_json TEXT NOT NULL,
script TEXT NOT NULL,
revision INTEGER NOT NULL,
created_by TEXT NOT NULL,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
migrated INTEGER NOT NULL DEFAULT 0 CHECK (migrated IN (0, 1))
);
CREATE INDEX IF NOT EXISTS trigger_definitions_group_idx
ON trigger_definitions(group_id, updated_at DESC);
CREATE TABLE IF NOT EXISTS trigger_runtime_state (
trigger_id TEXT NOT NULL REFERENCES trigger_definitions(trigger_id) ON DELETE CASCADE,
state_key TEXT NOT NULL,
state_value TEXT NOT NULL,
updated_at INTEGER NOT NULL,
PRIMARY KEY(trigger_id, state_key)
);
CREATE TABLE IF NOT EXISTS trigger_migrations (
migration_key TEXT PRIMARY KEY,
applied_at INTEGER NOT NULL
);