mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-14 21:10:34 +01:00
Add search Mode for mysql.
This commit is contained in:
parent
8f542ed998
commit
203f4e8e03
@ -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<any>): [
|
||||
];
|
||||
}
|
||||
|
||||
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,
|
||||
};
|
||||
|
@ -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,
|
||||
},
|
||||
},
|
||||
}),
|
||||
|
@ -86,6 +86,8 @@ export async function getTeams(
|
||||
options?: { include?: Prisma.TeamInclude },
|
||||
): Promise<FilterResult<Team[]>> {
|
||||
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,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -41,6 +41,8 @@ export async function getUsers(
|
||||
options?: { include?: Prisma.UserInclude },
|
||||
): Promise<FilterResult<User[]>> {
|
||||
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,
|
||||
},
|
||||
}),
|
||||
},
|
||||
|
@ -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 },
|
||||
}),
|
||||
},
|
||||
],
|
||||
|
Loading…
x
Reference in New Issue
Block a user