Skip to content

Commit a21774d

Browse files
authored
Merge pull request #794 from thedevs-network/develop
Develop into main
2 parents d2c1341 + 8c4d92e commit a21774d

File tree

8 files changed

+47
-37
lines changed

8 files changed

+47
-37
lines changed

.example.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ CUSTOM_DOMAIN_USE_HTTPS=false
6565
# More info on the configuration on http://nodemailer.com/.
6666
MAIL_ENABLED=false
6767
MAIL_HOST=
68-
MAIL_PORT=
68+
MAIL_PORT=587
6969
MAIL_SECURE=true
7070
MAIL_USER=
7171
MAIL_FROM=

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "kutt",
3-
"version": "3.1.0",
3+
"version": "3.1.1",
44
"description": "Modern URL shortener.",
55
"main": "./server/server.js",
66
"scripts": {

server/env.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ if (process.env.LINK_CUSTOM_ALPHABET === "") {
1515
delete process.env.LINK_CUSTOM_ALPHABET;
1616
}
1717

18+
// make sure jwt secret is not empty
19+
if (process.env.JWT_SECRET === "") {
20+
delete process.env.JWT_SECRET;
21+
}
22+
1823
const env = cleanEnv(process.env, {
1924
PORT: num({ default: 3000 }),
2025
SITE_NAME: str({ example: "Kutt", default: "Kutt" }),

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: 12 additions & 9 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

@@ -160,7 +160,7 @@ async function getAdmin(match, params) {
160160
}
161161

162162
query.leftJoin(
163-
knex("links").select("domain_id").count("id as links_count").groupBy("domain_id").as("l"),
163+
knex("links").select("domain_id").count("* as links_count").groupBy("domain_id").as("l"),
164164
"domains.id",
165165
"l.domain_id"
166166
);
@@ -180,27 +180,30 @@ 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) {
194197
query.leftJoin(
195-
knex("links").select("domain_id").count("id as links_count").groupBy("domain_id").as("l"),
198+
knex("links").select("domain_id").count("* as links_count").groupBy("domain_id").as("l"),
196199
"domains.id",
197200
"l.domain_id"
198201
);
199202
query.andWhere("links_count", params?.links ? "is not" : "is", null);
200203
}
201204

202205
query.leftJoin("users", "domains.user_id", "users.id");
203-
query.count("domains.id as count");
206+
query.count("* as count");
204207

205208
const [{ count }] = await query;
206209

server/queries/link.queries.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,13 @@ 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");
73-
query.count("links.id as count");
73+
query.count("* as count");
7474

7575
const [{ count }] = await query;
7676

@@ -87,26 +87,26 @@ 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");
108108
query.leftJoin("users", "links.user_id", "users.id");
109-
query.count("links.id as count");
109+
query.count("* as count");
110110

111111
const [{ count }] = await query;
112112

@@ -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: 6 additions & 6 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
}
@@ -169,7 +169,7 @@ async function getAdmin(match, params) {
169169
"d.user_id"
170170
)
171171
query.leftJoin(
172-
knex("links").select("user_id").count("id as links_count").groupBy("user_id").as("l"),
172+
knex("links").select("user_id").count("* as links_count").groupBy("user_id").as("l"),
173173
"users.id",
174174
"l.user_id"
175175
);
@@ -179,14 +179,14 @@ async function getAdmin(match, params) {
179179

180180
async function totalAdmin(match, params) {
181181
const query = knex("users")
182-
.count("users.id as count")
182+
.count("* as count")
183183
.fromRaw('users')
184184
.where(normalizeMatch(match));
185185

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
}
@@ -209,13 +209,13 @@ async function totalAdmin(match, params) {
209209
if (params?.links !== undefined) {
210210
query.andWhere("links", params?.links ? "is not" : "is", null);
211211
query.leftJoin(
212-
knex("links").select("user_id").count("id as links").groupBy("user_id").as("l"),
212+
knex("links").select("user_id").count("* as links").groupBy("user_id").as("l"),
213213
"users.id",
214214
"l.user_id"
215215
);
216216
}
217217

218-
const [{count}] = await query;
218+
const [{ count }] = await query;
219219

220220
return typeof count === "number" ? count : parseInt(count);
221221
}

0 commit comments

Comments
 (0)