migrations/0001_session_control.sql
Rama main · réplica de lectura del repositorio original.
CREATE TABLE albert_users (
id TEXT PRIMARY KEY NOT NULL CHECK (length(id) > 0)
);
CREATE TABLE albert_identity_bindings (
connector_id TEXT NOT NULL CHECK (length(connector_id) > 0),
external_actor_id TEXT NOT NULL CHECK (length(external_actor_id) > 0),
user_id TEXT NOT NULL REFERENCES albert_users(id),
PRIMARY KEY (connector_id, external_actor_id)
);
-- Private channel selectors only. A group's fixed session belongs to the
-- authoritative octo-history catalog and never appears in this table.
CREATE TABLE albert_private_session_routes (
connector_id TEXT NOT NULL CHECK (length(connector_id) > 0),
channel_id TEXT NOT NULL CHECK (length(channel_id) > 0),
user_id TEXT NOT NULL REFERENCES albert_users(id),
session_id TEXT NOT NULL CHECK (length(session_id) > 0),
return_session_id TEXT,
revision INTEGER NOT NULL CHECK (revision > 0),
PRIMARY KEY (connector_id, channel_id, user_id)
);
-- No transcript, title, attachment or message receipt belongs here. These
-- markers survive loss of a temporary session's RAM journal after a restart.
CREATE TABLE albert_session_markers (
session_id TEXT PRIMARY KEY NOT NULL CHECK (length(session_id) > 0),
runtime_epoch TEXT NOT NULL CHECK (length(runtime_epoch) > 0),
state TEXT NOT NULL CHECK (state IN ('temporary', 'saved', 'closed', 'expired')),
revision INTEGER NOT NULL CHECK (revision > 0)
);