feat(postgres): auto-initialize boolean integer operators for PostgreSQL
All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 10s

This commit is contained in:
vickytechkey 2026-10-19 19:58:41 +05:30
parent fbff2e3fd9
commit 766c3deae0

View file

@ -496,14 +496,41 @@ class Database {
* @returns {Promise<void>}
*/
static async initMariaDB() {
log.debug("db", "Checking if MariaDB database exists...");
if (Database.dbConfig.type === "postgres" || Database.dbConfig.type === "postgresql") {
try {
await R.knex.raw(`
CREATE OR REPLACE FUNCTION bool_eq_int(boolean, integer) RETURNS boolean STRICT IMMUTABLE LANGUAGE SQL AS $$ SELECT $1 = ($2 != 0); $$;
CREATE OR REPLACE FUNCTION int_eq_bool(integer, boolean) RETURNS boolean STRICT IMMUTABLE LANGUAGE SQL AS $$ SELECT ($1 != 0) = $2; $$;
CREATE OR REPLACE FUNCTION bool_ne_int(boolean, integer) RETURNS boolean STRICT IMMUTABLE LANGUAGE SQL AS $$ SELECT $1 != ($2 != 0); $$;
CREATE OR REPLACE FUNCTION int_ne_bool(integer, boolean) RETURNS boolean STRICT IMMUTABLE LANGUAGE SQL AS $$ SELECT ($1 != 0) != $2; $$;
DO $$ BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_operator WHERE oprname = '=' AND oprleft = 'boolean'::regtype AND oprright = 'integer'::regtype) THEN
CREATE OPERATOR = (LEFTARG = boolean, RIGHTARG = integer, PROCEDURE = bool_eq_int, COMMUTATOR = =);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_operator WHERE oprname = '=' AND oprleft = 'integer'::regtype AND oprright = 'boolean'::regtype) THEN
CREATE OPERATOR = (LEFTARG = integer, RIGHTARG = boolean, PROCEDURE = int_eq_bool, COMMUTATOR = =);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_operator WHERE oprname = '<>' AND oprleft = 'boolean'::regtype AND oprright = 'integer'::regtype) THEN
CREATE OPERATOR <> (LEFTARG = boolean, RIGHTARG = integer, PROCEDURE = bool_ne_int, COMMUTATOR = <>);
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_operator WHERE oprname = '<>' AND oprleft = 'integer'::regtype AND oprright = 'boolean'::regtype) THEN
CREATE OPERATOR <> (LEFTARG = integer, RIGHTARG = boolean, PROCEDURE = int_ne_bool, COMMUTATOR = <>);
END IF;
END $$;
`);
} catch (e) {
log.warn("db", "Could not initialize PostgreSQL boolean operators: " + e.message);
}
}
log.debug("db", "Checking if MariaDB/PostgreSQL database exists...");
let hasTable = await R.hasTable("docker_host");
if (!hasTable) {
const { createTables } = require("../db/knex_init_db");
await createTables();
} else {
log.debug("db", "MariaDB database already exists");
log.debug("db", "Database already exists");
}
}