44 lines
1.7 KiB
MySQL
44 lines
1.7 KiB
MySQL
|
|
CREATE TABLE shared_instances (
|
||
|
|
id BIGINT PRIMARY KEY,
|
||
|
|
title VARCHAR(255) NOT NULL,
|
||
|
|
owner_id BIGINT NOT NULL REFERENCES users,
|
||
|
|
current_version_id BIGINT NULL,
|
||
|
|
public BOOLEAN NOT NULL DEFAULT FALSE
|
||
|
|
);
|
||
|
|
CREATE INDEX shared_instances_owner_id ON shared_instances(owner_id);
|
||
|
|
|
||
|
|
CREATE TABLE shared_instance_users (
|
||
|
|
user_id BIGINT NOT NULL REFERENCES users ON DELETE CASCADE,
|
||
|
|
shared_instance_id BIGINT NOT NULL REFERENCES shared_instances ON DELETE CASCADE,
|
||
|
|
permissions BIGINT NOT NULL DEFAULT 0,
|
||
|
|
|
||
|
|
PRIMARY KEY (user_id, shared_instance_id)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE TABLE shared_instance_invited_users (
|
||
|
|
id BIGINT PRIMARY KEY,
|
||
|
|
shared_instance_id BIGINT NOT NULL REFERENCES shared_instances ON DELETE CASCADE,
|
||
|
|
invited_user_id BIGINT NULL REFERENCES users ON DELETE CASCADE
|
||
|
|
);
|
||
|
|
CREATE INDEX shared_instance_invited_users_shared_instance_id ON shared_instance_invited_users(shared_instance_id);
|
||
|
|
CREATE INDEX shared_instance_invited_users_invited_user_id ON shared_instance_invited_users(invited_user_id);
|
||
|
|
|
||
|
|
CREATE TABLE shared_instance_invite_links (
|
||
|
|
id BIGINT PRIMARY KEY,
|
||
|
|
shared_instance_id BIGINT NOT NULL REFERENCES shared_instances ON DELETE CASCADE,
|
||
|
|
expiration timestamptz NULL,
|
||
|
|
remaining_uses BIGINT CHECK ( remaining_uses >= 0 ) NULL
|
||
|
|
);
|
||
|
|
CREATE INDEX shared_instance_invite_links_shared_instance_id ON shared_instance_invite_links(shared_instance_id);
|
||
|
|
|
||
|
|
CREATE TABLE shared_instance_versions (
|
||
|
|
id BIGINT PRIMARY KEY,
|
||
|
|
shared_instance_id BIGINT NOT NULL REFERENCES shared_instances ON DELETE CASCADE,
|
||
|
|
size BIGINT NOT NULL,
|
||
|
|
sha512 bytea NOT NULL,
|
||
|
|
created timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
ALTER TABLE shared_instances
|
||
|
|
ADD FOREIGN KEY (current_version_id) REFERENCES shared_instance_versions(id) ON DELETE SET NULL;
|