45 lines
1.8 KiB
SQL
45 lines
1.8 KiB
SQL
-- ==========================================
|
|
-- Chat Switchboard — 012 Extensions
|
|
-- ==========================================
|
|
-- Extension registry and per-user settings.
|
|
-- ICD §13 (Extensions)
|
|
-- ==========================================
|
|
|
|
-- =========================================
|
|
-- EXTENSIONS
|
|
-- =========================================
|
|
|
|
CREATE TABLE IF NOT EXISTS extensions (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
ext_id VARCHAR(100) NOT NULL UNIQUE,
|
|
name VARCHAR(200) NOT NULL,
|
|
version VARCHAR(50) NOT NULL DEFAULT '0.0.0',
|
|
tier VARCHAR(20) NOT NULL DEFAULT 'browser',
|
|
description TEXT NOT NULL DEFAULT '',
|
|
author VARCHAR(200) NOT NULL DEFAULT '',
|
|
manifest JSONB NOT NULL DEFAULT '{}',
|
|
is_system BOOLEAN NOT NULL DEFAULT false,
|
|
is_enabled BOOLEAN NOT NULL DEFAULT true,
|
|
scope VARCHAR(20) NOT NULL DEFAULT 'global',
|
|
team_id UUID REFERENCES teams(id) ON DELETE CASCADE,
|
|
installed_by UUID REFERENCES users(id) ON DELETE SET NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_extensions_tier ON extensions(tier);
|
|
CREATE INDEX IF NOT EXISTS idx_extensions_enabled ON extensions(is_enabled) WHERE is_enabled = true;
|
|
|
|
|
|
-- =========================================
|
|
-- EXTENSION USER SETTINGS
|
|
-- =========================================
|
|
|
|
CREATE TABLE IF NOT EXISTS extension_user_settings (
|
|
extension_id UUID NOT NULL REFERENCES extensions(id) ON DELETE CASCADE,
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
settings JSONB NOT NULL DEFAULT '{}',
|
|
is_enabled BOOLEAN NOT NULL DEFAULT true,
|
|
PRIMARY KEY (extension_id, user_id)
|
|
);
|