mirror of
https://github.com/fosrl/pangolin.git
synced 2026-03-04 09:46:40 +00:00
♻️ use like & LOWER(column) for searching with query
This commit is contained in:
@@ -20,9 +20,9 @@ import {
|
|||||||
asc,
|
asc,
|
||||||
desc,
|
desc,
|
||||||
eq,
|
eq,
|
||||||
ilike,
|
|
||||||
inArray,
|
inArray,
|
||||||
isNull,
|
isNull,
|
||||||
|
like,
|
||||||
or,
|
or,
|
||||||
sql,
|
sql,
|
||||||
type SQL
|
type SQL
|
||||||
@@ -305,7 +305,14 @@ export async function listClients(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (query) {
|
if (query) {
|
||||||
conditions.push(or(ilike(clients.name, "%" + query + "%")));
|
conditions.push(
|
||||||
|
or(
|
||||||
|
like(
|
||||||
|
sql`LOWER(${clients.name})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const baseQuery = queryClientsBase().where(and(...conditions));
|
const baseQuery = queryClientsBase().where(and(...conditions));
|
||||||
|
|||||||
@@ -20,10 +20,10 @@ import {
|
|||||||
asc,
|
asc,
|
||||||
desc,
|
desc,
|
||||||
eq,
|
eq,
|
||||||
ilike,
|
|
||||||
inArray,
|
inArray,
|
||||||
isNotNull,
|
isNotNull,
|
||||||
isNull,
|
isNull,
|
||||||
|
like,
|
||||||
or,
|
or,
|
||||||
sql,
|
sql,
|
||||||
type SQL
|
type SQL
|
||||||
@@ -287,8 +287,14 @@ export async function listUserDevices(
|
|||||||
if (query) {
|
if (query) {
|
||||||
conditions.push(
|
conditions.push(
|
||||||
or(
|
or(
|
||||||
ilike(clients.name, "%" + query + "%"),
|
like(
|
||||||
ilike(users.email, "%" + query + "%")
|
sql`LOWER(${clients.name})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
),
|
||||||
|
like(
|
||||||
|
sql`LOWER(${users.email})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,39 +1,37 @@
|
|||||||
import { Request, Response, NextFunction } from "express";
|
|
||||||
import { z } from "zod";
|
|
||||||
import {
|
import {
|
||||||
db,
|
db,
|
||||||
resourceHeaderAuth,
|
resourceHeaderAuth,
|
||||||
resourceHeaderAuthExtendedCompatibility
|
resourceHeaderAuthExtendedCompatibility,
|
||||||
} from "@server/db";
|
|
||||||
import {
|
|
||||||
resources,
|
|
||||||
userResources,
|
|
||||||
roleResources,
|
|
||||||
resourcePassword,
|
resourcePassword,
|
||||||
resourcePincode,
|
resourcePincode,
|
||||||
|
resources,
|
||||||
|
roleResources,
|
||||||
|
targetHealthCheck,
|
||||||
targets,
|
targets,
|
||||||
targetHealthCheck
|
userResources
|
||||||
} from "@server/db";
|
} from "@server/db";
|
||||||
import response from "@server/lib/response";
|
import response from "@server/lib/response";
|
||||||
|
import logger from "@server/logger";
|
||||||
|
import { OpenAPITags, registry } from "@server/openApi";
|
||||||
import HttpCode from "@server/types/HttpCode";
|
import HttpCode from "@server/types/HttpCode";
|
||||||
import createHttpError from "http-errors";
|
import type { PaginatedResponse } from "@server/types/Pagination";
|
||||||
import {
|
import {
|
||||||
sql,
|
|
||||||
eq,
|
|
||||||
or,
|
|
||||||
inArray,
|
|
||||||
and,
|
and,
|
||||||
count,
|
|
||||||
ilike,
|
|
||||||
asc,
|
asc,
|
||||||
not,
|
count,
|
||||||
|
eq,
|
||||||
|
inArray,
|
||||||
isNull,
|
isNull,
|
||||||
|
like,
|
||||||
|
not,
|
||||||
|
or,
|
||||||
|
sql,
|
||||||
type SQL
|
type SQL
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import logger from "@server/logger";
|
import { NextFunction, Request, Response } from "express";
|
||||||
|
import createHttpError from "http-errors";
|
||||||
|
import { z } from "zod";
|
||||||
import { fromZodError } from "zod-validation-error";
|
import { fromZodError } from "zod-validation-error";
|
||||||
import { OpenAPITags, registry } from "@server/openApi";
|
|
||||||
import type { PaginatedResponse } from "@server/types/Pagination";
|
|
||||||
|
|
||||||
const listResourcesParamsSchema = z.strictObject({
|
const listResourcesParamsSchema = z.strictObject({
|
||||||
orgId: z.string()
|
orgId: z.string()
|
||||||
@@ -278,8 +276,14 @@ export async function listResources(
|
|||||||
if (query) {
|
if (query) {
|
||||||
conditions.push(
|
conditions.push(
|
||||||
or(
|
or(
|
||||||
ilike(resources.name, "%" + query + "%"),
|
like(
|
||||||
ilike(resources.fullDomain, "%" + query + "%")
|
sql`LOWER(${resources.name})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
),
|
||||||
|
like(
|
||||||
|
sql`LOWER(${resources.fullDomain})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,25 @@
|
|||||||
import { db, exitNodes, newts } from "@server/db";
|
|
||||||
import { orgs, roleSites, sites, userSites } from "@server/db";
|
|
||||||
import { remoteExitNodes } from "@server/db";
|
|
||||||
import logger from "@server/logger";
|
|
||||||
import HttpCode from "@server/types/HttpCode";
|
|
||||||
import response from "@server/lib/response";
|
|
||||||
import {
|
import {
|
||||||
and,
|
db,
|
||||||
asc,
|
exitNodes,
|
||||||
count,
|
newts,
|
||||||
desc,
|
orgs,
|
||||||
eq,
|
remoteExitNodes,
|
||||||
ilike,
|
roleSites,
|
||||||
inArray,
|
sites,
|
||||||
or,
|
userSites
|
||||||
sql
|
} from "@server/db";
|
||||||
} from "drizzle-orm";
|
import cache from "@server/lib/cache";
|
||||||
|
import response from "@server/lib/response";
|
||||||
|
import logger from "@server/logger";
|
||||||
|
import { OpenAPITags, registry } from "@server/openApi";
|
||||||
|
import HttpCode from "@server/types/HttpCode";
|
||||||
|
import type { PaginatedResponse } from "@server/types/Pagination";
|
||||||
|
import { and, asc, desc, eq, inArray, like, or, sql } from "drizzle-orm";
|
||||||
import { NextFunction, Request, Response } from "express";
|
import { NextFunction, Request, Response } from "express";
|
||||||
import createHttpError from "http-errors";
|
import createHttpError from "http-errors";
|
||||||
|
import semver from "semver";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { fromError } from "zod-validation-error";
|
import { fromError } from "zod-validation-error";
|
||||||
import { OpenAPITags, registry } from "@server/openApi";
|
|
||||||
import semver from "semver";
|
|
||||||
import cache from "@server/lib/cache";
|
|
||||||
import type { PaginatedResponse } from "@server/types/Pagination";
|
|
||||||
|
|
||||||
async function getLatestNewtVersion(): Promise<string | null> {
|
async function getLatestNewtVersion(): Promise<string | null> {
|
||||||
try {
|
try {
|
||||||
@@ -233,8 +230,14 @@ export async function listSites(
|
|||||||
if (query) {
|
if (query) {
|
||||||
conditions.push(
|
conditions.push(
|
||||||
or(
|
or(
|
||||||
ilike(sites.name, "%" + query + "%"),
|
like(
|
||||||
ilike(sites.niceId, "%" + query + "%")
|
sql`LOWER(${sites.name})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
),
|
||||||
|
like(
|
||||||
|
sql`LOWER(${sites.niceId})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
import { Request, Response, NextFunction } from "express";
|
import { db, SiteResource, siteResources, sites } from "@server/db";
|
||||||
import { z } from "zod";
|
|
||||||
import { db, resources } from "@server/db";
|
|
||||||
import { siteResources, sites, SiteResource } from "@server/db";
|
|
||||||
import response from "@server/lib/response";
|
import response from "@server/lib/response";
|
||||||
import HttpCode from "@server/types/HttpCode";
|
|
||||||
import createHttpError from "http-errors";
|
|
||||||
import { eq, and, asc, ilike, or } from "drizzle-orm";
|
|
||||||
import { fromError } from "zod-validation-error";
|
|
||||||
import logger from "@server/logger";
|
import logger from "@server/logger";
|
||||||
import { OpenAPITags, registry } from "@server/openApi";
|
import { OpenAPITags, registry } from "@server/openApi";
|
||||||
|
import HttpCode from "@server/types/HttpCode";
|
||||||
import type { PaginatedResponse } from "@server/types/Pagination";
|
import type { PaginatedResponse } from "@server/types/Pagination";
|
||||||
|
import { and, asc, eq, like, or, sql } from "drizzle-orm";
|
||||||
|
import { NextFunction, Request, Response } from "express";
|
||||||
|
import createHttpError from "http-errors";
|
||||||
|
import { z } from "zod";
|
||||||
|
import { fromError } from "zod-validation-error";
|
||||||
|
|
||||||
const listAllSiteResourcesByOrgParamsSchema = z.strictObject({
|
const listAllSiteResourcesByOrgParamsSchema = z.strictObject({
|
||||||
orgId: z.string()
|
orgId: z.string()
|
||||||
@@ -118,11 +117,26 @@ export async function listAllSiteResourcesByOrg(
|
|||||||
if (query) {
|
if (query) {
|
||||||
conditions.push(
|
conditions.push(
|
||||||
or(
|
or(
|
||||||
ilike(siteResources.name, "%" + query + "%"),
|
like(
|
||||||
ilike(siteResources.destination, "%" + query + "%"),
|
sql`LOWER(${siteResources.name})`,
|
||||||
ilike(siteResources.alias, "%" + query + "%"),
|
"%" + query.toLowerCase() + "%"
|
||||||
ilike(siteResources.aliasAddress, "%" + query + "%"),
|
),
|
||||||
ilike(sites.name, "%" + query + "%")
|
like(
|
||||||
|
sql`LOWER(${siteResources.destination})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
),
|
||||||
|
like(
|
||||||
|
sql`LOWER(${siteResources.alias})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
),
|
||||||
|
like(
|
||||||
|
sql`LOWER(${siteResources.aliasAddress})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
),
|
||||||
|
like(
|
||||||
|
sql`LOWER(${sites.name})`,
|
||||||
|
"%" + query.toLowerCase() + "%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user