This repository has been archived on 2024-08-23. You can view files and clone it, but cannot push or open issues or pull requests.
project/migrations/0001_initial.up.sql
2024-08-03 16:16:31 +03:00

42 lines
1.4 KiB
SQL

CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS pg_uuidv7;
CREATE TABLE
users (
user_id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
hashed_password BYTEA NOT NULL
);
CREATE TABLE
folders (
folder_id UUID PRIMARY KEY DEFAULT uuid_generate_v7 (),
parent_folder_id UUID REFERENCES folders (folder_id) ON DELETE CASCADE DEFAULT null,
owner_id INT REFERENCES users (user_id) ON DELETE CASCADE NOT NULL,
folder_name VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
CREATE TABLE
files (
file_id UUID PRIMARY KEY DEFAULT uuid_generate_v7 (),
folder_id UUID REFERENCES folders (folder_id) ON DELETE CASCADE NOT NULL,
file_name VARCHAR(255) NOT NULL,
file_size BIGINT NOT NULL,
sha512 BYTEA NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
CREATE TYPE permission AS ENUM ('read', 'write', 'manage');
CREATE TABLE
permissions (
permission_id SERIAL PRIMARY KEY,
user_id INT REFERENCES users (user_id) ON DELETE CASCADE NOT NULL,
folder_id UUID REFERENCES folders (folder_id) ON DELETE CASCADE,
permission_type permission NOT NULL,
UNIQUE (user_id, folder_id)
);