23 lines
1.0 KiB
SQL
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); |