Files
gochat/migrations/000009_add_permissibles_table.up.sql
T
2026-06-04 15:44:48 +08:00

23 lines
1.0 KiB
SQL

-- Permissible table: polymorphic association between platform_apps and Account/User/AgentBot
-- Reference: Chatwoot permissible model (used for access control scoping)
CREATE TABLE IF NOT EXISTS permissibles (
id SERIAL PRIMARY KEY,
platform_app_id INTEGER NOT NULL REFERENCES platform_apps(id) ON DELETE CASCADE,
permissible_type VARCHAR(100) NOT NULL,
permissible_id INTEGER NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Unique constraint: one permissible entry per (platform_app, type, id) combination
CREATE UNIQUE INDEX IF NOT EXISTS idx_permissibles_unique
ON permissibles(platform_app_id, permissible_type, permissible_id);
-- Indexes for lookup performance
CREATE INDEX IF NOT EXISTS idx_permissibles_platform_app_id
ON permissibles(platform_app_id);
CREATE INDEX IF NOT EXISTS idx_permissibles_permissible_type
ON permissibles(permissible_type);
CREATE INDEX IF NOT EXISTS idx_permissibles_permissible_id
ON permissibles(permissible_id);