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 { loadWebsite } from './load';
|
||||||
import { maxDate } from './date';
|
import { maxDate } from './date';
|
||||||
import { QueryFilters, QueryOptions, SearchFilter } from './types';
|
import { QueryFilters, QueryOptions, SearchFilter } from './types';
|
||||||
|
import { Prisma } from '@prisma/client';
|
||||||
|
|
||||||
const MYSQL_DATE_FORMATS = {
|
const MYSQL_DATE_FORMATS = {
|
||||||
minute: '%Y-%m-%d %H:%i:00',
|
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 {
|
export default {
|
||||||
...prisma,
|
...prisma,
|
||||||
getAddMinutesQuery,
|
getAddMinutesQuery,
|
||||||
@ -185,5 +198,6 @@ export default {
|
|||||||
getFilterQuery,
|
getFilterQuery,
|
||||||
parseFilters,
|
parseFilters,
|
||||||
getPageFilters,
|
getPageFilters,
|
||||||
|
getSearchMode,
|
||||||
rawQuery,
|
rawQuery,
|
||||||
};
|
};
|
||||||
|
@ -38,6 +38,8 @@ export async function getReports(
|
|||||||
filterType = REPORT_FILTER_TYPES.all,
|
filterType = REPORT_FILTER_TYPES.all,
|
||||||
} = ReportSearchFilter;
|
} = ReportSearchFilter;
|
||||||
|
|
||||||
|
const mode = prisma.getSearchMode();
|
||||||
|
|
||||||
const where: Prisma.ReportWhereInput = {
|
const where: Prisma.ReportWhereInput = {
|
||||||
...(userId && { userId: userId }),
|
...(userId && { userId: userId }),
|
||||||
...(websiteId && { websiteId: websiteId }),
|
...(websiteId && { websiteId: websiteId }),
|
||||||
@ -73,7 +75,7 @@ export async function getReports(
|
|||||||
filterType === REPORT_FILTER_TYPES.name) && {
|
filterType === REPORT_FILTER_TYPES.name) && {
|
||||||
name: {
|
name: {
|
||||||
startsWith: filter,
|
startsWith: filter,
|
||||||
mode: 'insensitive',
|
...mode,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
@ -82,7 +84,7 @@ export async function getReports(
|
|||||||
filterType === REPORT_FILTER_TYPES.description) && {
|
filterType === REPORT_FILTER_TYPES.description) && {
|
||||||
description: {
|
description: {
|
||||||
startsWith: filter,
|
startsWith: filter,
|
||||||
mode: 'insensitive',
|
...mode,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
@ -91,7 +93,7 @@ export async function getReports(
|
|||||||
filterType === REPORT_FILTER_TYPES.type) && {
|
filterType === REPORT_FILTER_TYPES.type) && {
|
||||||
type: {
|
type: {
|
||||||
startsWith: filter,
|
startsWith: filter,
|
||||||
mode: 'insensitive',
|
...mode,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
@ -101,7 +103,7 @@ export async function getReports(
|
|||||||
user: {
|
user: {
|
||||||
username: {
|
username: {
|
||||||
startsWith: filter,
|
startsWith: filter,
|
||||||
mode: 'insensitive',
|
...mode,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
@ -112,7 +114,7 @@ export async function getReports(
|
|||||||
website: {
|
website: {
|
||||||
name: {
|
name: {
|
||||||
startsWith: filter,
|
startsWith: filter,
|
||||||
mode: 'insensitive',
|
...mode,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
@ -123,7 +125,7 @@ export async function getReports(
|
|||||||
website: {
|
website: {
|
||||||
domain: {
|
domain: {
|
||||||
startsWith: filter,
|
startsWith: filter,
|
||||||
mode: 'insensitive',
|
...mode,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
@ -86,6 +86,8 @@ export async function getTeams(
|
|||||||
options?: { include?: Prisma.TeamInclude },
|
options?: { include?: Prisma.TeamInclude },
|
||||||
): Promise<FilterResult<Team[]>> {
|
): Promise<FilterResult<Team[]>> {
|
||||||
const { userId, filter, filterType = TEAM_FILTER_TYPES.all } = TeamSearchFilter;
|
const { userId, filter, filterType = TEAM_FILTER_TYPES.all } = TeamSearchFilter;
|
||||||
|
const mode = prisma.getSearchMode();
|
||||||
|
|
||||||
const where: Prisma.TeamWhereInput = {
|
const where: Prisma.TeamWhereInput = {
|
||||||
...(userId && {
|
...(userId && {
|
||||||
teamUser: {
|
teamUser: {
|
||||||
@ -97,7 +99,7 @@ export async function getTeams(
|
|||||||
OR: [
|
OR: [
|
||||||
{
|
{
|
||||||
...((filterType === TEAM_FILTER_TYPES.all || filterType === TEAM_FILTER_TYPES.name) && {
|
...((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: {
|
user: {
|
||||||
username: {
|
username: {
|
||||||
startsWith: filter,
|
startsWith: filter,
|
||||||
mode: 'insensitive',
|
...mode,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -41,6 +41,8 @@ export async function getUsers(
|
|||||||
options?: { include?: Prisma.UserInclude },
|
options?: { include?: Prisma.UserInclude },
|
||||||
): Promise<FilterResult<User[]>> {
|
): Promise<FilterResult<User[]>> {
|
||||||
const { teamId, filter, filterType = USER_FILTER_TYPES.all } = UserSearchFilter;
|
const { teamId, filter, filterType = USER_FILTER_TYPES.all } = UserSearchFilter;
|
||||||
|
const mode = prisma.getSearchMode();
|
||||||
|
|
||||||
const where: Prisma.UserWhereInput = {
|
const where: Prisma.UserWhereInput = {
|
||||||
...(teamId && {
|
...(teamId && {
|
||||||
teamUser: {
|
teamUser: {
|
||||||
@ -57,7 +59,7 @@ export async function getUsers(
|
|||||||
filterType === USER_FILTER_TYPES.username) && {
|
filterType === USER_FILTER_TYPES.username) && {
|
||||||
username: {
|
username: {
|
||||||
startsWith: filter,
|
startsWith: filter,
|
||||||
mode: 'insensitive',
|
...mode,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
@ -30,6 +30,7 @@ export async function getWebsites(
|
|||||||
filter,
|
filter,
|
||||||
filterType = WEBSITE_FILTER_TYPES.all,
|
filterType = WEBSITE_FILTER_TYPES.all,
|
||||||
} = WebsiteSearchFilter;
|
} = WebsiteSearchFilter;
|
||||||
|
const mode = prisma.getSearchMode();
|
||||||
|
|
||||||
const where: Prisma.WebsiteWhereInput = {
|
const where: Prisma.WebsiteWhereInput = {
|
||||||
...(teamId && {
|
...(teamId && {
|
||||||
@ -79,13 +80,13 @@ export async function getWebsites(
|
|||||||
{
|
{
|
||||||
...((filterType === WEBSITE_FILTER_TYPES.all ||
|
...((filterType === WEBSITE_FILTER_TYPES.all ||
|
||||||
filterType === WEBSITE_FILTER_TYPES.name) && {
|
filterType === WEBSITE_FILTER_TYPES.name) && {
|
||||||
name: { startsWith: filter, mode: 'insensitive' },
|
name: { startsWith: filter, ...mode },
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
...((filterType === WEBSITE_FILTER_TYPES.all ||
|
...((filterType === WEBSITE_FILTER_TYPES.all ||
|
||||||
filterType === WEBSITE_FILTER_TYPES.domain) && {
|
filterType === WEBSITE_FILTER_TYPES.domain) && {
|
||||||
domain: { startsWith: filter, mode: 'insensitive' },
|
domain: { startsWith: filter, ...mode },
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user