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