Skip to content

Commit

Permalink
Merge pull request #794 from thedevs-network/develop
Browse files Browse the repository at this point in the history
Develop into main
  • Loading branch information
poeti8 authored Jan 18, 2025
2 parents d2c1341 + 8c4d92e commit a21774d
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 37 deletions.
2 changes: 1 addition & 1 deletion .example.env
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ CUSTOM_DOMAIN_USE_HTTPS=false
# More info on the configuration on http://nodemailer.com/.
MAIL_ENABLED=false
MAIL_HOST=
MAIL_PORT=
MAIL_PORT=587
MAIL_SECURE=true
MAIL_USER=
MAIL_FROM=
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kutt",
"version": "3.1.0",
"version": "3.1.1",
"description": "Modern URL shortener.",
"main": "./server/server.js",
"scripts": {
Expand Down
5 changes: 5 additions & 0 deletions server/env.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ if (process.env.LINK_CUSTOM_ALPHABET === "") {
delete process.env.LINK_CUSTOM_ALPHABET;
}

// make sure jwt secret is not empty
if (process.env.JWT_SECRET === "") {
delete process.env.JWT_SECRET;
}

const env = cleanEnv(process.env, {
PORT: num({ default: 3000 }),
SITE_NAME: str({ example: "Kutt", default: "Kutt" }),
Expand Down
2 changes: 2 additions & 0 deletions server/knex.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,6 @@ db.isPostgres = isPostgres;
db.isSQLite = isSQLite;
db.isMySQL = isMySQL;

db.compatibleILIKE = isPostgres ? "andWhereILike" : "andWhereLike";

module.exports = db;
21 changes: 12 additions & 9 deletions server/queries/domain.queries.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 + "%"
);
}

Expand All @@ -160,7 +160,7 @@ async function getAdmin(match, params) {
}

query.leftJoin(
knex("links").select("domain_id").count("id as links_count").groupBy("domain_id").as("l"),
knex("links").select("domain_id").count("* as links_count").groupBy("domain_id").as("l"),
"domains.id",
"l.domain_id"
);
Expand All @@ -180,27 +180,30 @@ 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) {
query.leftJoin(
knex("links").select("domain_id").count("id as links_count").groupBy("domain_id").as("l"),
knex("links").select("domain_id").count("* as links_count").groupBy("domain_id").as("l"),
"domains.id",
"l.domain_id"
);
query.andWhere("links_count", params?.links ? "is not" : "is", null);
}

query.leftJoin("users", "domains.user_id", "users.id");
query.count("domains.id as count");
query.count("* as count");

const [{ count }] = await query;

Expand Down
36 changes: 18 additions & 18 deletions server/queries/link.queries.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,13 @@ 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");
query.count("links.id as count");
query.count("* as count");

const [{ count }] = await query;

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

const [{ count }] = await query;

Expand All @@ -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 + "%"
);
}

Expand All @@ -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");
Expand Down
12 changes: 6 additions & 6 deletions server/queries/user.queries.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -169,7 +169,7 @@ async function getAdmin(match, params) {
"d.user_id"
)
query.leftJoin(
knex("links").select("user_id").count("id as links_count").groupBy("user_id").as("l"),
knex("links").select("user_id").count("* as links_count").groupBy("user_id").as("l"),
"users.id",
"l.user_id"
);
Expand All @@ -179,14 +179,14 @@ async function getAdmin(match, params) {

async function totalAdmin(match, params) {
const query = knex("users")
.count("users.id as count")
.count("* as count")
.fromRaw('users')
.where(normalizeMatch(match));

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

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

return typeof count === "number" ? count : parseInt(count);
}
Expand Down

0 comments on commit a21774d

Please sign in to comment.