package db

var migrations = []string{
	// 0: accounts table
	`CREATE TABLE IF NOT EXISTS accounts (
		id          BIGSERIAL PRIMARY KEY,
		username    VARCHAR(32) UNIQUE NOT NULL,
		password    VARCHAR(128) NOT NULL,
		created_at  TIMESTAMPTZ NOT NULL DEFAULT NOW()
	)`,

	// 1: characters table
	`CREATE TABLE IF NOT EXISTS characters (
		id          BIGSERIAL PRIMARY KEY,
		account_id  BIGINT NOT NULL REFERENCES accounts(id),
		name        VARCHAR(32) UNIQUE NOT NULL,
		level       INT NOT NULL DEFAULT 1,
		exp         BIGINT NOT NULL DEFAULT 0,
		hp          INT NOT NULL DEFAULT 100,
		max_hp      INT NOT NULL DEFAULT 100,
		mp          INT NOT NULL DEFAULT 50,
		max_mp      INT NOT NULL DEFAULT 50,
		str         INT NOT NULL DEFAULT 10,
		dex         INT NOT NULL DEFAULT 10,
		int_stat    INT NOT NULL DEFAULT 10,
		zone_id     INT NOT NULL DEFAULT 1,
		pos_x       REAL NOT NULL DEFAULT 0,
		pos_y       REAL NOT NULL DEFAULT 0,
		pos_z       REAL NOT NULL DEFAULT 0,
		rotation    REAL NOT NULL DEFAULT 0,
		created_at  TIMESTAMPTZ NOT NULL DEFAULT NOW(),
		updated_at  TIMESTAMPTZ NOT NULL DEFAULT NOW()
	)`,

	// 2: inventory table
	`CREATE TABLE IF NOT EXISTS inventory (
		id           BIGSERIAL PRIMARY KEY,
		character_id BIGINT NOT NULL REFERENCES characters(id) ON DELETE CASCADE,
		slot         INT NOT NULL,
		item_id      INT NOT NULL,
		quantity     INT NOT NULL DEFAULT 1,
		UNIQUE(character_id, slot)
	)`,

	// 3: index for character lookups by account
	`CREATE INDEX IF NOT EXISTS idx_characters_account_id ON characters(account_id)`,
}
