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) );