Skip to content

Commit de10342

Browse files
committed
fix filtering table rows on sqlite and mysql
1 parent fc265ef commit de10342

File tree

4 files changed

+29
-24
lines changed

4 files changed

+29
-24
lines changed

server/knex.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,6 @@ db.isPostgres = isPostgres;
2828
db.isSQLite = isSQLite;
2929
db.isMySQL = isMySQL;
3030

31+
db.compatibleILIKE = isPostgres ? "andWhereILike" : "andWhereLike";
32+
3133
module.exports = db;

server/queries/domain.queries.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,16 +142,16 @@ async function getAdmin(match, params) {
142142
if (params?.user) {
143143
const id = parseInt(params?.user);
144144
if (Number.isNaN(id)) {
145-
query.andWhereILike("users.email", "%" + params.user + "%");
145+
query[knex.compatibleILIKE]("users.email", "%" + params.user + "%");
146146
} else {
147147
query.andWhere("domains.user_id", id);
148148
}
149149
}
150150

151151
if (params?.search) {
152-
query.andWhereRaw(
153-
"concat_ws(' ', domains.address, domains.homepage) ILIKE '%' || ? || '%'",
154-
[params.search]
152+
query[knex.compatibleILIKE](
153+
knex.raw("concat_ws(' ', domains.address, domains.homepage)"),
154+
"%" + params.search + "%"
155155
);
156156
}
157157

@@ -180,14 +180,17 @@ async function totalAdmin(match, params) {
180180
if (params?.user) {
181181
const id = parseInt(params?.user);
182182
if (Number.isNaN(id)) {
183-
query.andWhereILike("users.email", "%" + params.user + "%");
183+
query[knex.compatibleILIKE]("users.email", "%" + params.user + "%");
184184
} else {
185185
query.andWhere("domains.user_id", id);
186186
}
187187
}
188188

189189
if (params?.search) {
190-
query.andWhereILike("domains.address", "%" + params.search + "%");
190+
query[knex.compatibleILIKE](
191+
knex.raw("concat_ws(' ', domains.address, domains.homepage)"),
192+
"%" + params.search + "%"
193+
);
191194
}
192195

193196
if (params?.links !== undefined) {

server/queries/link.queries.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ async function total(match, params) {
6464
});
6565

6666
if (params?.search) {
67-
query.andWhereRaw(
68-
"concat_ws(' ', description, links.address, target, domains.address) ILIKE '%' || ? || '%'",
69-
[params.search]
67+
query[knex.compatibleILIKE](
68+
knex.raw("concat_ws(' ', description, links.address, target, domains.address)"),
69+
"%" + params.search + "%"
7070
);
7171
}
7272
query.leftJoin("domains", "links.domain_id", "domains.id");
@@ -87,21 +87,21 @@ async function totalAdmin(match, params) {
8787
if (params?.user) {
8888
const id = parseInt(params?.user);
8989
if (Number.isNaN(id)) {
90-
query.andWhereILike("users.email", "%" + params.user + "%");
90+
query[knex.compatibleILIKE]("users.email", "%" + params.user + "%");
9191
} else {
9292
query.andWhere("links.user_id", params.user);
9393
}
9494
}
9595

9696
if (params?.search) {
97-
query.andWhereRaw(
98-
"concat_ws(' ', description, links.address, target) ILIKE '%' || ? || '%'",
99-
[params.search]
97+
query[knex.compatibleILIKE](
98+
knex.raw("concat_ws(' ', description, links.address, target)"),
99+
"%" + params.search + "%"
100100
);
101101
}
102102

103103
if (params?.domain) {
104-
query.andWhereRaw("domains.address ILIKE '%' || ? || '%'", [params.domain]);
104+
query[knex.compatibleILIKE]("domains.address", "%" + params.domain + "%");
105105
}
106106

107107
query.leftJoin("domains", "links.domain_id", "domains.id");
@@ -122,9 +122,9 @@ async function get(match, params) {
122122
.orderBy("links.id", "desc");
123123

124124
if (params?.search) {
125-
query.andWhereRaw(
126-
"concat_ws(' ', description, links.address, target, domains.address) ILIKE '%' || ? || '%'",
127-
[params.search]
125+
query[knex.compatibleILIKE](
126+
knex.raw("concat_ws(' ', description, links.address, target, domains.address)"),
127+
"%" + params.search + "%"
128128
);
129129
}
130130

@@ -148,21 +148,21 @@ async function getAdmin(match, params) {
148148
if (params?.user) {
149149
const id = parseInt(params?.user);
150150
if (Number.isNaN(id)) {
151-
query.andWhereILike("users.email", "%" + params.user + "%");
151+
query[knex.compatibleILIKE]("users.email", "%" + params.user + "%");
152152
} else {
153153
query.andWhere("links.user_id", params.user);
154154
}
155155
}
156156

157157
if (params?.search) {
158-
query.andWhereRaw(
159-
"concat_ws(' ', description, links.address, target) ILIKE '%' || ? || '%'",
160-
[params.search]
158+
query[knex.compatibleILIKE](
159+
knex.raw("concat_ws(' ', description, links.address, target)"),
160+
"%" + params.search + "%"
161161
);
162162
}
163163

164164
if (params?.domain) {
165-
query.andWhereRaw("domains.address ILIKE '%' || ? || '%'", [params.domain]);
165+
query[knex.compatibleILIKE]("domains.address", "%" + params.domain + "%");
166166
}
167167

168168
query.leftJoin("domains", "links.domain_id", "domains.id");

server/queries/user.queries.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ async function getAdmin(match, params) {
144144
if (params?.search) {
145145
const id = parseInt(params?.search);
146146
if (Number.isNaN(id)) {
147-
query.andWhereILike("users.email", "%" + params?.search + "%");
147+
query[knex.compatibleILIKE]("users.email", "%" + params?.search + "%");
148148
} else {
149149
query.andWhere("users.id", params?.search);
150150
}
@@ -186,7 +186,7 @@ async function totalAdmin(match, params) {
186186
if (params?.search) {
187187
const id = parseInt(params?.search);
188188
if (Number.isNaN(id)) {
189-
query.andWhereILike("users.email", "%" + params?.search + "%");
189+
query[knex.compatibleILIKE]("users.email", "%" + params?.search + "%");
190190
} else {
191191
query.andWhere("users.id", params?.search);
192192
}

0 commit comments

Comments
 (0)