36 lines
1.2 KiB
MySQL
36 lines
1.2 KiB
MySQL
|
CREATE TABLE
|
||
|
users (
|
||
|
user_id SERIAL PRIMARY KEY,
|
||
|
username VARCHAR(50) NOT NULL UNIQUE,
|
||
|
email VARCHAR(100) NOT NULL UNIQUE
|
||
|
);
|
||
|
|
||
|
CREATE TABLE
|
||
|
folders (
|
||
|
folder_id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
|
||
|
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 gen_random_uuid (),
|
||
|
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
|
||
|
);
|