Files
phylum/client/lib/libphylum/db/sql/resources.drift
T
2025-04-11 20:57:09 +05:30

32 lines
992 B
Plaintext

CREATE TABLE IF NOT EXISTS resources(
id TEXT NOT NULL PRIMARY KEY,
parent TEXT REFERENCES resources (id),
name TEXT NOT NULL,
dir BOOLEAN NOT NULL CHECK ("dir" IN (0, 1)),
created DATETIME,
modified DATETIME,
deleted DATETIME,
content_length INTEGER NOT NULL DEFAULT 0,
content_sha256 TEXT NOT NULL DEFAULT '',
content_type TEXT NOT NULL DEFAULT '',
permissions TEXT,
grants TEXT,
publinks TEXT,
last_refresh DATETIME
);
parents: WITH RECURSIVE parents(id, parent, name, permissions) AS (
SELECT id, parent, name, permissions
FROM resources
WHERE id = :id
UNION ALL
SELECT r.id, r.parent, r.name, r.permissions
FROM resources r
JOIN parents p
ON r.id = p.parent
) SELECT id, name, permissions from parents;
permissions: SELECT r.name, r.permissions, r.grants, p.permissions as inherited_permissions
FROM resources r
JOIN resources p ON r.parent = p.id
WhERE r.id = :id;