diff --git a/lib/prisma.ts b/lib/prisma.ts index efce3f4e..76c5a09b 100644 --- a/lib/prisma.ts +++ b/lib/prisma.ts @@ -5,6 +5,7 @@ import { FILTER_COLUMNS, SESSION_COLUMNS, OPERATORS } from './constants'; import { loadWebsite } from './load'; import { maxDate } from './date'; import { QueryFilters, QueryOptions, SearchFilter } from './types'; +import { Prisma } from '@prisma/client'; const MYSQL_DATE_FORMATS = { minute: '%Y-%m-%d %H:%i:00', @@ -177,6 +178,18 @@ function getPageFilters(filters: SearchFilter): [ ]; } +function getSearchMode(): { mode?: Prisma.QueryMode } { + const db = getDatabaseType(); + + if (db === POSTGRESQL) { + return { + mode: 'insensitive', + }; + } + + return {}; +} + export default { ...prisma, getAddMinutesQuery, @@ -185,5 +198,6 @@ export default { getFilterQuery, parseFilters, getPageFilters, + getSearchMode, rawQuery, }; diff --git a/queries/admin/report.ts b/queries/admin/report.ts index 3c3e3e2d..22f3c62b 100644 --- a/queries/admin/report.ts +++ b/queries/admin/report.ts @@ -38,6 +38,8 @@ export async function getReports( filterType = REPORT_FILTER_TYPES.all, } = ReportSearchFilter; + const mode = prisma.getSearchMode(); + const where: Prisma.ReportWhereInput = { ...(userId && { userId: userId }), ...(websiteId && { websiteId: websiteId }), @@ -73,7 +75,7 @@ export async function getReports( filterType === REPORT_FILTER_TYPES.name) && { name: { startsWith: filter, - mode: 'insensitive', + ...mode, }, }), }, @@ -82,7 +84,7 @@ export async function getReports( filterType === REPORT_FILTER_TYPES.description) && { description: { startsWith: filter, - mode: 'insensitive', + ...mode, }, }), }, @@ -91,7 +93,7 @@ export async function getReports( filterType === REPORT_FILTER_TYPES.type) && { type: { startsWith: filter, - mode: 'insensitive', + ...mode, }, }), }, @@ -101,7 +103,7 @@ export async function getReports( user: { username: { startsWith: filter, - mode: 'insensitive', + ...mode, }, }, }), @@ -112,7 +114,7 @@ export async function getReports( website: { name: { startsWith: filter, - mode: 'insensitive', + ...mode, }, }, }), @@ -123,7 +125,7 @@ export async function getReports( website: { domain: { startsWith: filter, - mode: 'insensitive', + ...mode, }, }, }), diff --git a/queries/admin/team.ts b/queries/admin/team.ts index 71ea634a..79735fc7 100644 --- a/queries/admin/team.ts +++ b/queries/admin/team.ts @@ -86,6 +86,8 @@ export async function getTeams( options?: { include?: Prisma.TeamInclude }, ): Promise> { const { userId, filter, filterType = TEAM_FILTER_TYPES.all } = TeamSearchFilter; + const mode = prisma.getSearchMode(); + const where: Prisma.TeamWhereInput = { ...(userId && { teamUser: { @@ -97,7 +99,7 @@ export async function getTeams( OR: [ { ...((filterType === TEAM_FILTER_TYPES.all || filterType === TEAM_FILTER_TYPES.name) && { - name: { startsWith: filter, mode: 'insensitive' }, + name: { startsWith: filter, ...mode }, }), }, { @@ -109,7 +111,7 @@ export async function getTeams( user: { username: { startsWith: filter, - mode: 'insensitive', + ...mode, }, }, }, diff --git a/queries/admin/user.ts b/queries/admin/user.ts index 3aece6d1..dfb923f3 100644 --- a/queries/admin/user.ts +++ b/queries/admin/user.ts @@ -41,6 +41,8 @@ export async function getUsers( options?: { include?: Prisma.UserInclude }, ): Promise> { const { teamId, filter, filterType = USER_FILTER_TYPES.all } = UserSearchFilter; + const mode = prisma.getSearchMode(); + const where: Prisma.UserWhereInput = { ...(teamId && { teamUser: { @@ -57,7 +59,7 @@ export async function getUsers( filterType === USER_FILTER_TYPES.username) && { username: { startsWith: filter, - mode: 'insensitive', + ...mode, }, }), }, diff --git a/queries/admin/website.ts b/queries/admin/website.ts index 8c3535cc..3d0c773b 100644 --- a/queries/admin/website.ts +++ b/queries/admin/website.ts @@ -30,6 +30,7 @@ export async function getWebsites( filter, filterType = WEBSITE_FILTER_TYPES.all, } = WebsiteSearchFilter; + const mode = prisma.getSearchMode(); const where: Prisma.WebsiteWhereInput = { ...(teamId && { @@ -79,13 +80,13 @@ export async function getWebsites( { ...((filterType === WEBSITE_FILTER_TYPES.all || filterType === WEBSITE_FILTER_TYPES.name) && { - name: { startsWith: filter, mode: 'insensitive' }, + name: { startsWith: filter, ...mode }, }), }, { ...((filterType === WEBSITE_FILTER_TYPES.all || filterType === WEBSITE_FILTER_TYPES.domain) && { - domain: { startsWith: filter, mode: 'insensitive' }, + domain: { startsWith: filter, ...mode }, }), }, ],