mirror of
https://github.com/umami-software/umami.git
synced 2026-02-09 23:27:12 +01:00
Updated search queries.
This commit is contained in:
parent
80a58cbdd1
commit
e971f2533d
12 changed files with 90 additions and 147 deletions
|
|
@ -17,27 +17,23 @@ export function getDatabaseType(url = process.env.DATABASE_URL) {
|
|||
return POSTGRESQL;
|
||||
}
|
||||
|
||||
if (process.env.CLICKHOUSE_URL) {
|
||||
return CLICKHOUSE;
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
export async function runQuery(queries: any) {
|
||||
const db = getDatabaseType(process.env.CLICKHOUSE_URL || process.env.DATABASE_URL);
|
||||
|
||||
if (db === POSTGRESQL || db === MYSQL) {
|
||||
return queries[PRISMA]();
|
||||
}
|
||||
|
||||
if (db === CLICKHOUSE) {
|
||||
if (process.env.CLICKHOUSE_URL) {
|
||||
if (queries[KAFKA]) {
|
||||
return queries[KAFKA]();
|
||||
}
|
||||
|
||||
return queries[CLICKHOUSE]();
|
||||
}
|
||||
|
||||
const db = getDatabaseType();
|
||||
|
||||
if (db === POSTGRESQL || db === MYSQL) {
|
||||
return queries[PRISMA]();
|
||||
}
|
||||
}
|
||||
|
||||
export function notImplemented() {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ const POSTGRESQL_DATE_FORMATS = {
|
|||
};
|
||||
|
||||
function getAddIntervalQuery(field: string, interval: string): string {
|
||||
const db = getDatabaseType(process.env.DATABASE_URL);
|
||||
const db = getDatabaseType();
|
||||
|
||||
if (db === POSTGRESQL) {
|
||||
return `${field} + interval '${interval}'`;
|
||||
|
|
@ -36,7 +36,7 @@ function getAddIntervalQuery(field: string, interval: string): string {
|
|||
}
|
||||
|
||||
function getDayDiffQuery(field1: string, field2: string): string {
|
||||
const db = getDatabaseType(process.env.DATABASE_URL);
|
||||
const db = getDatabaseType();
|
||||
|
||||
if (db === POSTGRESQL) {
|
||||
return `${field1}::date - ${field2}::date`;
|
||||
|
|
@ -48,7 +48,7 @@ function getDayDiffQuery(field1: string, field2: string): string {
|
|||
}
|
||||
|
||||
function getCastColumnQuery(field: string, type: string): string {
|
||||
const db = getDatabaseType(process.env.DATABASE_URL);
|
||||
const db = getDatabaseType();
|
||||
|
||||
if (db === POSTGRESQL) {
|
||||
return `${field}::${type}`;
|
||||
|
|
@ -92,7 +92,7 @@ function getTimestampDiffQuery(field1: string, field2: string): string {
|
|||
}
|
||||
}
|
||||
|
||||
function mapFilter(column, operator, name, type = 'varchar') {
|
||||
function mapFilter(column: string, operator: string, name: string, type = 'varchar') {
|
||||
switch (operator) {
|
||||
case OPERATORS.equals:
|
||||
return `${column} = {{${name}::${type}}}`;
|
||||
|
|
@ -208,16 +208,44 @@ function getQueryMode(): Prisma.QueryMode {
|
|||
return 'default';
|
||||
}
|
||||
|
||||
function getSearchParameters(query: string, filters: { [key: string]: any }[]) {
|
||||
if (!query) return;
|
||||
|
||||
const mode = getQueryMode();
|
||||
const parseFilter = (filter: { [key: string]: any }) => {
|
||||
const [[key, value]] = Object.entries(filter);
|
||||
|
||||
return {
|
||||
[key]:
|
||||
typeof value === 'string'
|
||||
? {
|
||||
[value]: query,
|
||||
mode,
|
||||
}
|
||||
: parseFilter(value),
|
||||
};
|
||||
};
|
||||
|
||||
const params = filters.map(filter => parseFilter(filter));
|
||||
|
||||
return {
|
||||
AND: {
|
||||
OR: params,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default {
|
||||
...prisma,
|
||||
getAddIntervalQuery,
|
||||
getDayDiffQuery,
|
||||
getCastColumnQuery,
|
||||
getDayDiffQuery,
|
||||
getDateQuery,
|
||||
getTimestampDiffQuery,
|
||||
getFilterQuery,
|
||||
parseFilters,
|
||||
getSearchParameters,
|
||||
getTimestampDiffQuery,
|
||||
getQueryMode,
|
||||
rawQuery,
|
||||
pagedQuery,
|
||||
parseFilters,
|
||||
rawQuery,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue