migrations/014_circle_access.sql
Rama main · réplica de lectura del repositorio original.
ALTER TABLE person
ADD COLUMN IF NOT EXISTS circles text[] NOT NULL DEFAULT '{}';
CREATE TABLE IF NOT EXISTS circle (
circle_id text PRIMARY KEY,
display_name text NOT NULL,
mattermost_channel_id text NOT NULL DEFAULT '',
is_mattermost_managed boolean NOT NULL DEFAULT false,
workspace_directory_path text NOT NULL DEFAULT '',
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL
);
CREATE TABLE IF NOT EXISTS person_circle (
person_circle_id text PRIMARY KEY,
person_id text NOT NULL REFERENCES person(person_id) ON DELETE CASCADE,
circle_id text NOT NULL REFERENCES circle(circle_id) ON DELETE CASCADE,
source text NOT NULL,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
UNIQUE (person_id, circle_id)
);
CREATE TABLE IF NOT EXISTS resource_access_rule (
resource_access_rule_id text PRIMARY KEY,
resource text NOT NULL,
actions text[] NOT NULL DEFAULT '{}',
circles text[] NOT NULL DEFAULT '{}',
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
UNIQUE (resource, actions, circles)
);
CREATE TABLE IF NOT EXISTS mattermost_circle_link (
circle_id text PRIMARY KEY REFERENCES circle(circle_id) ON DELETE CASCADE,
channel_name text NOT NULL UNIQUE,
channel_id text NOT NULL DEFAULT '',
last_synced_at timestamptz
);
ALTER TABLE graphiti_namespace
ADD COLUMN IF NOT EXISTS scope_circle_id text;
CREATE INDEX IF NOT EXISTS graphiti_namespace_circle_lookup_idx
ON graphiti_namespace (scope_type, scope_circle_id, updated_at DESC);