-- Characters are now the primary login entity. -- Each character has its own username + password hash. CREATE TABLE IF NOT EXISTS characters ( id SERIAL PRIMARY KEY, username TEXT UNIQUE NOT NULL, passhash TEXT NOT NULL, x INTEGER NOT NULL DEFAULT 100, y INTEGER NOT NULL DEFAULT 100, level INTEGER NOT NULL DEFAULT 1, xp BIGINT NOT NULL DEFAULT 0, last_login TIMESTAMPTZ ); CREATE TABLE IF NOT EXISTS items ( id SERIAL PRIMARY KEY, key TEXT UNIQUE NOT NULL, name TEXT NOT NULL, stack_max INTEGER NOT NULL DEFAULT 999 ); CREATE TABLE IF NOT EXISTS inventory ( id SERIAL PRIMARY KEY, character_id INTEGER REFERENCES characters(id) ON DELETE CASCADE, item_key TEXT NOT NULL, qty INTEGER NOT NULL DEFAULT 0 ); CREATE UNIQUE INDEX IF NOT EXISTS inventory_unique_item ON inventory (character_id, item_key);