48 lines
996 B
Plaintext
48 lines
996 B
Plaintext
/* tws_db.gsc — MariaDB pool + reachability probe. Fires db_probe_done. */
|
|
|
|
#include maps\_utility;
|
|
#include common_scripts\utility;
|
|
|
|
init()
|
|
{
|
|
if (GetDvar(#"zombiemode") != "1")
|
|
return;
|
|
|
|
scripts\sp\tws_common::ensure_config();
|
|
|
|
db_init();
|
|
}
|
|
|
|
// TODO: move creds to dvars before this repo goes public
|
|
db_init()
|
|
{
|
|
level.db_online = false;
|
|
level.db_probe_done = false;
|
|
|
|
cfg = spawnStruct();
|
|
cfg.host = "mariadb";
|
|
cfg.user = "josh";
|
|
cfg.password = "joshster";
|
|
cfg.port = 3306;
|
|
cfg.database = "tws_zm";
|
|
|
|
mysql::set_config(cfg);
|
|
|
|
level thread db_probe();
|
|
}
|
|
|
|
// set_config is silent on failure; only a real query surfaces the error
|
|
db_probe()
|
|
{
|
|
q = mysql::query("SELECT 1 AS ok");
|
|
q waittill("done", result, affected_rows, error);
|
|
|
|
if (isDefined(error) && error != "")
|
|
level.db_online = false;
|
|
else
|
|
level.db_online = true;
|
|
|
|
level.db_probe_done = true;
|
|
level notify("db_probe_done");
|
|
}
|