mirror of
https://github.com/umami-software/umami.git
synced 2026-02-21 13:05:36 +01:00
feat: separate mongoQuery & add mongo filter
This commit is contained in:
parent
4c57ab1388
commit
b5b689b156
15 changed files with 858 additions and 710 deletions
|
|
@ -26,9 +26,12 @@ export function getDatabaseType(url = process.env.DATABASE_URL) {
|
|||
export async function runQuery(queries) {
|
||||
const db = getDatabaseType(process.env.CLICKHOUSE_URL || process.env.DATABASE_URL);
|
||||
|
||||
if (db === POSTGRESQL || db === MYSQL || db === MONGODB) {
|
||||
if (db === POSTGRESQL || db === MYSQL) {
|
||||
return queries[PRISMA]();
|
||||
}
|
||||
if (db === MONGODB) {
|
||||
return queries[MONGODB]();
|
||||
}
|
||||
|
||||
if (db === CLICKHOUSE) {
|
||||
if (queries[KAFKA]) {
|
||||
|
|
|
|||
|
|
@ -142,6 +142,25 @@ function parseFilters(
|
|||
};
|
||||
}
|
||||
|
||||
function parseMongoFilter(filters: { [key: string]: any } = {}) {
|
||||
const query = {};
|
||||
|
||||
for (let k in filters) {
|
||||
const v = filters[k];
|
||||
if (v !== undefined) {
|
||||
const tempK = FILTER_COLUMNS[k];
|
||||
if (tempK !== undefined) {
|
||||
k = tempK;
|
||||
}
|
||||
if (k === 'browser' || k === 'os' || k === 'device' || k === 'language') {
|
||||
k = 'session.' + k;
|
||||
}
|
||||
query[k] = v;
|
||||
}
|
||||
}
|
||||
return { $match: query };
|
||||
}
|
||||
|
||||
async function rawQuery(query: string, params: never[] = []): Promise<any> {
|
||||
const db = getDatabaseType(process.env.DATABASE_URL);
|
||||
|
||||
|
|
@ -163,5 +182,6 @@ export default {
|
|||
getEventDataFilterQuery,
|
||||
toUuid,
|
||||
parseFilters,
|
||||
parseMongoFilter,
|
||||
rawQuery,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue