150 lines
3.1 KiB
SQL
150 lines
3.1 KiB
SQL
CREATE TABLE IF NOT EXISTS guilds (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
guild_id BIGINT NOT NULL UNIQUE,
|
|
guild_name TEXT NOT NULL,
|
|
guild_icon_url TEXT
|
|
);
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS channels (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
guild_id BIGINT NOT NULL,
|
|
channel_id BIGINT NOT NULL UNIQUE,
|
|
channel_name TEXT NOT NULL,
|
|
|
|
FOREIGN KEY (guild_id)
|
|
REFERENCES guilds(guild_id)
|
|
);
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS discord_users (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
discord_id BIGINT NOT NULL UNIQUE,
|
|
discord_username TEXT NOT NULL
|
|
);
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS discord_roles (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
guild_id BIGINT NOT NULL,
|
|
discord_id BIGINT NOT NULL,
|
|
discord_role_name TEXT NOT NULL,
|
|
|
|
UNIQUE (guild_id, discord_id),
|
|
|
|
FOREIGN KEY (guild_id)
|
|
REFERENCES guilds(guild_id)
|
|
);
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS messages (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
guild_id BIGINT NOT NULL,
|
|
channel_id BIGINT NOT NULL,
|
|
message_id BIGINT NOT NULL UNIQUE,
|
|
|
|
author_id BIGINT NOT NULL,
|
|
|
|
author_username TEXT NOT NULL,
|
|
|
|
content TEXT,
|
|
|
|
timestamp TIMESTAMPTZ NOT NULL,
|
|
|
|
FOREIGN KEY (guild_id)
|
|
REFERENCES guilds(guild_id),
|
|
|
|
FOREIGN KEY (channel_id)
|
|
REFERENCES channels(channel_id),
|
|
|
|
FOREIGN KEY (author_id)
|
|
REFERENCES discord_users(discord_id)
|
|
);
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS attachments (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
attachment_id BIGINT NOT NULL UNIQUE,
|
|
message_id BIGINT NOT NULL,
|
|
|
|
filename TEXT NOT NULL,
|
|
description TEXT,
|
|
content_type TEXT,
|
|
size BIGINT NOT NULL,
|
|
|
|
width INTEGER,
|
|
height INTEGER,
|
|
|
|
data BYTEA NOT NULL,
|
|
|
|
FOREIGN KEY (message_id)
|
|
REFERENCES messages(message_id)
|
|
ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS embeds (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
message_id BIGINT NOT NULL,
|
|
embed_index INTEGER NOT NULL,
|
|
|
|
embed_type TEXT,
|
|
title TEXT,
|
|
description TEXT,
|
|
url TEXT,
|
|
timestamp TIMESTAMPTZ,
|
|
color INTEGER,
|
|
|
|
footer_text TEXT,
|
|
footer_icon_url TEXT,
|
|
|
|
image_url TEXT,
|
|
image_proxy_url TEXT,
|
|
image_width INTEGER,
|
|
image_height INTEGER,
|
|
|
|
thumbnail_url TEXT,
|
|
thumbnail_proxy_url TEXT,
|
|
thumbnail_width INTEGER,
|
|
thumbnail_height INTEGER,
|
|
|
|
video_url TEXT,
|
|
video_proxy_url TEXT,
|
|
video_width INTEGER,
|
|
video_height INTEGER,
|
|
|
|
provider_name TEXT,
|
|
provider_url TEXT,
|
|
|
|
author_name TEXT,
|
|
author_url TEXT,
|
|
author_icon_url TEXT,
|
|
author_proxy_icon_url TEXT,
|
|
|
|
UNIQUE (message_id, embed_index),
|
|
|
|
FOREIGN KEY (message_id)
|
|
REFERENCES messages(message_id)
|
|
ON DELETE CASCADE
|
|
);
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS embed_fields (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
embed_uuid UUID NOT NULL,
|
|
field_index INTEGER NOT NULL,
|
|
|
|
name TEXT NOT NULL,
|
|
value TEXT NOT NULL,
|
|
inline BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
UNIQUE (embed_uuid, field_index),
|
|
|
|
FOREIGN KEY (embed_uuid)
|
|
REFERENCES embeds(uuid)
|
|
ON DELETE CASCADE
|
|
);
|