feat(postgres): auto-initialize boolean integer operators for PostgreSQL
All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 10s
All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 10s
This commit is contained in:
parent
fbff2e3fd9
commit
766c3deae0
1 changed files with 29 additions and 2 deletions
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue