fix filtering table rows on sqlite and mysql

This commit is contained in:
Pouria Ezzati 2025-01-18 12:49:58 +03:30
parent fc265ef221
commit de103423e3
4 changed files with 29 additions and 24 deletions

View File

@ -28,4 +28,6 @@ db.isPostgres = isPostgres;
db.isSQLite = isSQLite;
db.isMySQL = isMySQL;
db.compatibleILIKE = isPostgres ? "andWhereILike" : "andWhereLike";
module.exports = db;

View File

@ -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) {

View File

@ -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");

View File

@ -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);
}