diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index c35e0cde..c5e16ddc 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -93,6 +93,13 @@ function getTimestampDiffQuery(field1: string, field2: string): string { } } +function getSearchQuery(column: string): string { + const db = getDatabaseType(); + const like = db === POSTGRESQL ? 'ilike' : 'like'; + + return `and ${column} ${like} {{search}}`; +} + function mapFilter(column: string, operator: string, name: string, type: string = '') { const db = getDatabaseType(); const like = db === POSTGRESQL ? 'ilike' : 'like'; @@ -253,6 +260,7 @@ export default { getFilterQuery, getSearchParameters, getTimestampDiffQuery, + getSearchQuery, getQueryMode, pagedQuery, parseFilters, diff --git a/src/queries/analytics/getValues.ts b/src/queries/analytics/getValues.ts index 572fbac2..7cd34994 100644 --- a/src/queries/analytics/getValues.ts +++ b/src/queries/analytics/getValues.ts @@ -18,11 +18,11 @@ async function relationalQuery( endDate: Date, search: string, ) { - const { rawQuery } = prisma; + const { rawQuery, getSearchQuery } = prisma; let searchQuery = ''; if (search) { - searchQuery = `and ${column} LIKE {{search}}`; + searchQuery = getSearchQuery(column); } return rawQuery( diff --git a/src/queries/analytics/getWebsiteStats.ts b/src/queries/analytics/getWebsiteStats.ts index c5d010db..bc006a2e 100644 --- a/src/queries/analytics/getWebsiteStats.ts +++ b/src/queries/analytics/getWebsiteStats.ts @@ -43,10 +43,8 @@ async function relationalQuery( min(website_event.created_at) as "min_time", max(website_event.created_at) as "max_time" from website_event - join website - on website_event.website_id = website.website_id ${joinSession} - where website.website_id = {{websiteId::uuid}} + where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} and event_type = {{eventType}} ${filterQuery}