Files
warren/backend/migrations/20250906174941_init.sql
409 a1c9832515 migrate to sqlite
NOTE: extension loading crashes docker (for some reason)
2025-09-07 15:09:14 +02:00

51 lines
1.6 KiB
SQL

CREATE TABLE users (
id BLOB NOT NULL PRIMARY KEY DEFAULT (uuid_blob(uuid())),
oidc_sub TEXT UNIQUE,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
admin BOOLEAN NOT NULL DEFAULT FALSE,
hash TEXT,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE warrens (
id BLOB NOT NULL PRIMARY KEY DEFAULT (uuid_blob(uuid())),
name TEXT NOT NULL,
path TEXT NOT NULL UNIQUE,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE user_warrens (
user_id BLOB NOT NULL REFERENCES users(id) ON DELETE CASCADE,
warren_id BLOB NOT NULL REFERENCES warrens(id) ON DELETE CASCADE,
can_list_files BOOLEAN NOT NULL,
can_read_files BOOLEAN NOT NULL,
can_modify_files BOOLEAN NOT NULL,
can_delete_files BOOLEAN NOT NULL,
can_list_shares BOOLEAN NOT NULL,
can_create_shares BOOLEAN NOT NULL,
can_modify_shares BOOLEAN NOT NULL,
can_delete_shares BOOLEAN NOT NULL,
PRIMARY KEY(user_id, warren_id)
);
CREATE TABLE shares (
id BLOB NOT NULL PRIMARY KEY DEFAULT (uuid_blob(uuid())),
creator_id BLOB NOT NULL REFERENCES users(id) ON DELETE CASCADE,
warren_id BLOB NOT NULL REFERENCES warrens(id) ON DELETE CASCADE,
path TEXT NOT NULL,
password_hash TEXT,
expires_at DATETIME,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_shares_path ON shares(path);
CREATE TABLE auth_sessions (
session_id TEXT NOT NULL PRIMARY KEY,
user_id BLOB NOT NULL REFERENCES users(id) ON DELETE CASCADE,
expires_at DATETIME NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);