diff --git a/server/knex.js b/server/knex.js index f838f34..9cc39a7 100644 --- a/server/knex.js +++ b/server/knex.js @@ -28,4 +28,6 @@ db.isPostgres = isPostgres; db.isSQLite = isSQLite; db.isMySQL = isMySQL; +db.compatibleILIKE = isPostgres ? "andWhereILike" : "andWhereLike"; + module.exports = db; diff --git a/server/queries/domain.queries.js b/server/queries/domain.queries.js index dc60ab9..d09689c 100644 --- a/server/queries/domain.queries.js +++ b/server/queries/domain.queries.js @@ -142,16 +142,16 @@ async function getAdmin(match, params) { if (params?.user) { const id = parseInt(params?.user); if (Number.isNaN(id)) { - query.andWhereILike("users.email", "%" + params.user + "%"); + query[knex.compatibleILIKE]("users.email", "%" + params.user + "%"); } else { query.andWhere("domains.user_id", id); } } if (params?.search) { - query.andWhereRaw( - "concat_ws(' ', domains.address, domains.homepage) ILIKE '%' || ? || '%'", - [params.search] + query[knex.compatibleILIKE]( + knex.raw("concat_ws(' ', domains.address, domains.homepage)"), + "%" + params.search + "%" ); } @@ -180,14 +180,17 @@ async function totalAdmin(match, params) { if (params?.user) { const id = parseInt(params?.user); if (Number.isNaN(id)) { - query.andWhereILike("users.email", "%" + params.user + "%"); + query[knex.compatibleILIKE]("users.email", "%" + params.user + "%"); } else { query.andWhere("domains.user_id", id); } } if (params?.search) { - query.andWhereILike("domains.address", "%" + params.search + "%"); + query[knex.compatibleILIKE]( + knex.raw("concat_ws(' ', domains.address, domains.homepage)"), + "%" + params.search + "%" + ); } if (params?.links !== undefined) { diff --git a/server/queries/link.queries.js b/server/queries/link.queries.js index 4fddd62..543b67f 100644 --- a/server/queries/link.queries.js +++ b/server/queries/link.queries.js @@ -64,9 +64,9 @@ async function total(match, params) { }); if (params?.search) { - query.andWhereRaw( - "concat_ws(' ', description, links.address, target, domains.address) ILIKE '%' || ? || '%'", - [params.search] + query[knex.compatibleILIKE]( + knex.raw("concat_ws(' ', description, links.address, target, domains.address)"), + "%" + params.search + "%" ); } query.leftJoin("domains", "links.domain_id", "domains.id"); @@ -87,21 +87,21 @@ async function totalAdmin(match, params) { if (params?.user) { const id = parseInt(params?.user); if (Number.isNaN(id)) { - query.andWhereILike("users.email", "%" + params.user + "%"); + query[knex.compatibleILIKE]("users.email", "%" + params.user + "%"); } else { query.andWhere("links.user_id", params.user); } } if (params?.search) { - query.andWhereRaw( - "concat_ws(' ', description, links.address, target) ILIKE '%' || ? || '%'", - [params.search] + query[knex.compatibleILIKE]( + knex.raw("concat_ws(' ', description, links.address, target)"), + "%" + params.search + "%" ); } if (params?.domain) { - query.andWhereRaw("domains.address ILIKE '%' || ? || '%'", [params.domain]); + query[knex.compatibleILIKE]("domains.address", "%" + params.domain + "%"); } query.leftJoin("domains", "links.domain_id", "domains.id"); @@ -122,9 +122,9 @@ async function get(match, params) { .orderBy("links.id", "desc"); if (params?.search) { - query.andWhereRaw( - "concat_ws(' ', description, links.address, target, domains.address) ILIKE '%' || ? || '%'", - [params.search] + query[knex.compatibleILIKE]( + knex.raw("concat_ws(' ', description, links.address, target, domains.address)"), + "%" + params.search + "%" ); } @@ -148,21 +148,21 @@ async function getAdmin(match, params) { if (params?.user) { const id = parseInt(params?.user); if (Number.isNaN(id)) { - query.andWhereILike("users.email", "%" + params.user + "%"); + query[knex.compatibleILIKE]("users.email", "%" + params.user + "%"); } else { query.andWhere("links.user_id", params.user); } } if (params?.search) { - query.andWhereRaw( - "concat_ws(' ', description, links.address, target) ILIKE '%' || ? || '%'", - [params.search] + query[knex.compatibleILIKE]( + knex.raw("concat_ws(' ', description, links.address, target)"), + "%" + params.search + "%" ); } if (params?.domain) { - query.andWhereRaw("domains.address ILIKE '%' || ? || '%'", [params.domain]); + query[knex.compatibleILIKE]("domains.address", "%" + params.domain + "%"); } query.leftJoin("domains", "links.domain_id", "domains.id"); diff --git a/server/queries/user.queries.js b/server/queries/user.queries.js index e56d99d..cd05682 100644 --- a/server/queries/user.queries.js +++ b/server/queries/user.queries.js @@ -144,7 +144,7 @@ async function getAdmin(match, params) { if (params?.search) { const id = parseInt(params?.search); if (Number.isNaN(id)) { - query.andWhereILike("users.email", "%" + params?.search + "%"); + query[knex.compatibleILIKE]("users.email", "%" + params?.search + "%"); } else { query.andWhere("users.id", params?.search); } @@ -186,7 +186,7 @@ async function totalAdmin(match, params) { if (params?.search) { const id = parseInt(params?.search); if (Number.isNaN(id)) { - query.andWhereILike("users.email", "%" + params?.search + "%"); + query[knex.compatibleILIKE]("users.email", "%" + params?.search + "%"); } else { query.andWhere("users.id", params?.search); }