aboutsummaryrefslogtreecommitdiff
path: root/src/queries/sql/events/getEventData.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/queries/sql/events/getEventData.ts')
-rw-r--r--src/queries/sql/events/getEventData.ts63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/queries/sql/events/getEventData.ts b/src/queries/sql/events/getEventData.ts
new file mode 100644
index 0000000..f12c95c
--- /dev/null
+++ b/src/queries/sql/events/getEventData.ts
@@ -0,0 +1,63 @@
+import type { EventData } from '@/generated/prisma/client';
+import clickhouse from '@/lib/clickhouse';
+import { CLICKHOUSE, PRISMA, runQuery } from '@/lib/db';
+import prisma from '@/lib/prisma';
+
+const FUNCTION_NAME = 'getEventData';
+
+export async function getEventData(
+ ...args: [websiteId: string, eventId: string]
+): Promise<EventData[]> {
+ return runQuery({
+ [PRISMA]: () => relationalQuery(...args),
+ [CLICKHOUSE]: () => clickhouseQuery(...args),
+ });
+}
+
+async function relationalQuery(websiteId: string, eventId: string) {
+ const { rawQuery } = prisma;
+
+ return rawQuery(
+ `
+ select event_data.website_id as "websiteId",
+ event_data.website_event_id as "eventId",
+ website_event.event_name as "eventName",
+ event_data.data_key as "dataKey",
+ event_data.string_value as "stringValue",
+ event_data.number_value as "numberValue",
+ event_data.date_value as "dateValue",
+ event_data.data_type as "dataType",
+ event_data.created_at as "createdAt"
+ from event_data
+ join website_event on website_event.event_id = event_data.website_event_id
+ and website_event.website_id = {{websiteId::uuid}}
+ where event_data.website_id = {{websiteId::uuid}}
+ and event_data.website_event_id = {{eventId::uuid}}
+ `,
+ { websiteId, eventId },
+ FUNCTION_NAME,
+ );
+}
+
+async function clickhouseQuery(websiteId: string, eventId: string): Promise<EventData[]> {
+ const { rawQuery } = clickhouse;
+
+ return rawQuery(
+ `
+ select website_id as websiteId,
+ event_id as eventId,
+ event_name as eventName,
+ data_key as dataKey,
+ string_value as stringValue,
+ number_value as numberValue,
+ date_value as dateValue,
+ data_type as dataType,
+ created_at as createdAt
+ from event_data
+ where website_id = {websiteId:UUID}
+ and event_id = {eventId:UUID}
+ `,
+ { websiteId, eventId },
+ FUNCTION_NAME,
+ );
+}