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 messages ( id TEXT PRIMARY KEY NOT NULL, guild_id BIGINT NOT NULL, channel_id BIGINT NOT NULL, author_id BIGINT NOT NULL, created BIGINT NOT NULL, model TEXT NOT NULL, request TEXT NOT NULL, response TEXT NOT NULL, request_tags TEXT[] NOT NULL, response_tags TEXT[] NOT NULL ); CREATE TABLE IF NOT EXISTS api_keys ( key TEXT PRIMARY KEY NOT NULL, user_id BIGINT NOT NULL, user_name TEXT NOT NULL, access_mask INT ); CREATE TABLE IF NOT EXISTS dice_thresholds ( id UUID PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), owner_id BIGINT NOT NULL, dice TEXT NOT NULL, user_id BIGINT, value INT, operator TEXT ); CREATE TABLE IF NOT EXISTS events ( id UUID PRIMARY KEY NOT NULL, guild_id BIGINT NOT NULL, author_id BIGINT NOT NULL, title TEXT NOT NULL, date_time TIMESTAMP NOT NULL, description TEXT, rsvp BIGINT[] NOT NULL ); CREATE TABLE IF NOT EXISTS races ( id INTEGER GENERATED ALWAYS AS IDENTITY, name TEXT NOT NULL, size TEXT NOT NULL, source TEXT NOT NULL, data JSON NOT NULL ); CREATE TABLE IF NOT EXISTS classes ( id INTEGER GENERATED ALWAYS AS IDENTITY ); CREATE TABLE IF NOT EXISTS feats ( id INTEGER GENERATED ALWAYS AS IDENTITY ); CREATE TABLE IF NOT EXISTS options_features ( id INTEGER GENERATED ALWAYS AS IDENTITY ); CREATE TABLE IF NOT EXISTS backgrounds ( id INTEGER GENERATED ALWAYS AS IDENTITY ); CREATE TABLE IF NOT EXISTS items ( id INTEGER GENERATED ALWAYS AS IDENTITY ); CREATE TABLE IF NOT EXISTS spells ( id INTEGER GENERATED ALWAYS AS IDENTITY, name TEXT NOT NULL, school TEXT NOT NULL, level INTEGER NOT NULL, ritual BOOLEAN DEFAULT FALSE, concentration BOOLEAN DEFAULT FALSE, classes TEXT[] NOT NULL, damage_inflict TEXT[] NOT NULL, damage_resist TEXT[] NOT NULL, conditions TEXT[] NOT NULL, saving_throw TEXT[] NOT NULL, attack_type TEXT, data JSONB NOT NULL ); CREATE TABLE IF NOT EXISTS conditions ( id INTEGER GENERATED ALWAYS AS IDENTITY ); CREATE TABLE IF NOT EXISTS bestiary ( id INTEGER GENERATED ALWAYS AS IDENTITY );