-- Минимальные таблицы под логин-сервер в стиле L2J (accounts / gameservers / account_data).
-- Подходит для многих форков; у Samurai Crow/Essence могут отличаться имена колонок или хеш пароля —
-- тогда сверьте с SQL из вашей сборки и поправьте этот файл.
--
-- Тестовый логин: admin / admin
-- Хеш: Base64(SHA1 от UTF-8 строки «admin») — типично для L2J/Mobius.
-- Альтернатива (если сборка ждёт hex SHA1): замените поле password на
--   d033e22ae348aeb5660fc2140aec35850c4da997

CREATE TABLE IF NOT EXISTS accounts (
  login VARCHAR(45) NOT NULL PRIMARY KEY,
  password VARCHAR(128),
  lastactive BIGINT,
  accesslevel INTEGER NOT NULL DEFAULT 0,
  lastip VARCHAR(45),
  lastserver SMALLINT DEFAULT 1
);

CREATE TABLE IF NOT EXISTS account_data (
  account_name VARCHAR(45) NOT NULL,
  var VARCHAR(50) NOT NULL,
  value VARCHAR(255),
  PRIMARY KEY (account_name, var),
  CONSTRAINT fk_account_data_account FOREIGN KEY (account_name)
    REFERENCES accounts (login) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS gameservers (
  hexid VARCHAR(255) NOT NULL,
  server_id INTEGER NOT NULL PRIMARY KEY,
  host VARCHAR(255) NOT NULL
);

INSERT INTO accounts (login, password, lastactive, accesslevel, lastip, lastserver)
VALUES (
  'admin',
  '0DPiKuNIrrVmD8IUCuw1hQxNqZc=',
  (EXTRACT(EPOCH FROM NOW()) * 1000)::bigint,
  0,
  '127.0.0.1',
  1
)
ON CONFLICT (login) DO NOTHING;

-- Игровой сервер при первом подключении к логину часто сам делает INSERT в gameservers.
-- Если нужна явная запись (hexid должен совпасть с RequestServerID / hex в конфиге GS):
-- INSERT INTO gameservers (hexid, server_id, host)
-- VALUES ('ВАШ_32_СИМВОЛА_HEX', 1, '127.0.0.1')
-- ON CONFLICT (server_id) DO UPDATE SET hexid = EXCLUDED.hexid, host = EXCLUDED.host;
