22 lines
945 B
SQL
22 lines
945 B
SQL
CREATE TABLE IF NOT EXISTS permissions_next (
|
|
id TEXT PRIMARY KEY,
|
|
user_id TEXT NOT NULL,
|
|
resource_type TEXT NOT NULL CHECK(resource_type IN ('global', 'collection', 'document', 'folder')),
|
|
resource_id TEXT,
|
|
permission TEXT NOT NULL CHECK(permission IN ('read', 'write', 'admin')),
|
|
granted_by TEXT,
|
|
created_at TEXT NOT NULL,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(granted_by) REFERENCES users(id) ON DELETE SET NULL
|
|
);
|
|
|
|
INSERT INTO permissions_next (id, user_id, resource_type, resource_id, permission, granted_by, created_at)
|
|
SELECT id, user_id, resource_type, resource_id, permission, granted_by, created_at
|
|
FROM permissions;
|
|
|
|
DROP TABLE permissions;
|
|
ALTER TABLE permissions_next RENAME TO permissions;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_permissions_user ON permissions(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_permissions_resource ON permissions(resource_type, resource_id);
|