30 lines
928 B
SQL
30 lines
928 B
SQL
CREATE TABLE IF NOT EXISTS guilds (
|
|
id BIGINT PRIMARY KEY NOT NULL,
|
|
name TEXT,
|
|
owner_id BIGINT,
|
|
volume INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id UUID PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(),
|
|
username TEXT UNIQUE NOT NULL,
|
|
password_hash TEXT,
|
|
email TEXT UNIQUE,
|
|
first_name TEXT,
|
|
last_name TEXT,
|
|
role TEXT NOT NULL DEFAULT 'user' CHECK (role IN ('admin', 'user')),
|
|
status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'banned')),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS user_connections (
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
provider TEXT NOT NULL,
|
|
provider_user_id TEXT NOT NULL,
|
|
provider_username TEXT,
|
|
provider_avatar TEXT,
|
|
PRIMARY KEY (user_id, provider),
|
|
UNIQUE (provider, provider_user_id)
|
|
);
|