Skip to content

Commit 3230f65

Browse files
committed
add more truncation fields on save
1 parent cee7884 commit 3230f65

2 files changed

Lines changed: 60 additions & 46 deletions

File tree

src/lib/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,9 @@ export const DATETIME_REGEX =
262262
export const URL_LENGTH = 500;
263263
export const PAGE_TITLE_LENGTH = 500;
264264
export const EVENT_NAME_LENGTH = 50;
265+
export const TAG_LENGTH = 50;
266+
export const HOSTNAME_LENGTH = 100;
267+
export const FIELD_VALUE_LENGTH = 255;
265268

266269
export const UTM_PARAMS = ['utm_campaign', 'utm_content', 'utm_medium', 'utm_source', 'utm_term'];
267270

src/queries/sql/events/saveEvent.ts

Lines changed: 57 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import clickhouse from '@/lib/clickhouse';
2-
import { EVENT_NAME_LENGTH, PAGE_TITLE_LENGTH, URL_LENGTH } from '@/lib/constants';
2+
import {
3+
EVENT_NAME_LENGTH,
4+
FIELD_VALUE_LENGTH,
5+
HOSTNAME_LENGTH,
6+
PAGE_TITLE_LENGTH,
7+
TAG_LENGTH,
8+
URL_LENGTH,
9+
} from '@/lib/constants';
310
import { uuid } from '@/lib/crypto';
411
import { CLICKHOUSE, PRISMA, runQuery } from '@/lib/db';
512
import kafka from '@/lib/kafka';
@@ -69,6 +76,10 @@ export async function saveEvent(args: SaveEventArgs) {
6976
});
7077
}
7178

79+
function truncate(value: string | null | undefined, maxLength: number) {
80+
return value ? value.substring(0, maxLength) : value;
81+
}
82+
7283
async function relationalQuery({
7384
websiteId,
7485
sessionId,
@@ -110,27 +121,27 @@ async function relationalQuery({
110121
websiteId,
111122
sessionId,
112123
visitId,
113-
urlPath: urlPath?.substring(0, URL_LENGTH),
114-
urlQuery: urlQuery?.substring(0, URL_LENGTH),
115-
utmSource,
116-
utmMedium,
117-
utmCampaign,
118-
utmContent,
119-
utmTerm,
120-
referrerPath: referrerPath?.substring(0, URL_LENGTH),
121-
referrerQuery: referrerQuery?.substring(0, URL_LENGTH),
122-
referrerDomain: referrerDomain?.substring(0, URL_LENGTH),
123-
pageTitle: pageTitle?.substring(0, PAGE_TITLE_LENGTH),
124-
gclid,
125-
fbclid,
126-
msclkid,
127-
ttclid,
128-
lifatid,
129-
twclid,
124+
urlPath: truncate(urlPath, URL_LENGTH),
125+
urlQuery: truncate(urlQuery, URL_LENGTH),
126+
utmSource: truncate(utmSource, FIELD_VALUE_LENGTH),
127+
utmMedium: truncate(utmMedium, FIELD_VALUE_LENGTH),
128+
utmCampaign: truncate(utmCampaign, FIELD_VALUE_LENGTH),
129+
utmContent: truncate(utmContent, FIELD_VALUE_LENGTH),
130+
utmTerm: truncate(utmTerm, FIELD_VALUE_LENGTH),
131+
referrerPath: truncate(referrerPath, URL_LENGTH),
132+
referrerQuery: truncate(referrerQuery, URL_LENGTH),
133+
referrerDomain: truncate(referrerDomain, URL_LENGTH),
134+
pageTitle: truncate(pageTitle, PAGE_TITLE_LENGTH),
135+
gclid: truncate(gclid, FIELD_VALUE_LENGTH),
136+
fbclid: truncate(fbclid, FIELD_VALUE_LENGTH),
137+
msclkid: truncate(msclkid, FIELD_VALUE_LENGTH),
138+
ttclid: truncate(ttclid, FIELD_VALUE_LENGTH),
139+
lifatid: truncate(lifatid, FIELD_VALUE_LENGTH),
140+
twclid: truncate(twclid, FIELD_VALUE_LENGTH),
130141
eventType,
131-
eventName: eventName ? eventName?.substring(0, EVENT_NAME_LENGTH) : null,
132-
tag,
133-
hostname,
142+
eventName: truncate(eventName, EVENT_NAME_LENGTH) ?? null,
143+
tag: truncate(tag, TAG_LENGTH),
144+
hostname: truncate(hostname, HOSTNAME_LENGTH),
134145
lcp,
135146
inp,
136147
cls,
@@ -145,8 +156,8 @@ async function relationalQuery({
145156
websiteId,
146157
sessionId,
147158
eventId: websiteEventId,
148-
urlPath: urlPath?.substring(0, URL_LENGTH),
149-
eventName: eventName?.substring(0, EVENT_NAME_LENGTH),
159+
urlPath: truncate(urlPath, URL_LENGTH),
160+
eventName: truncate(eventName, EVENT_NAME_LENGTH),
150161
eventData,
151162
createdAt,
152163
});
@@ -158,7 +169,7 @@ async function relationalQuery({
158169
websiteId,
159170
sessionId,
160171
eventId: websiteEventId,
161-
eventName: eventName?.substring(0, EVENT_NAME_LENGTH),
172+
eventName: truncate(eventName, EVENT_NAME_LENGTH),
162173
currency,
163174
revenue,
164175
createdAt,
@@ -221,34 +232,34 @@ async function clickhouseQuery({
221232
country: country,
222233
region: country && region ? (region.includes('-') ? region : `${country}-${region}`) : null,
223234
city: city,
224-
url_path: urlPath?.substring(0, URL_LENGTH),
225-
url_query: urlQuery?.substring(0, URL_LENGTH),
226-
utm_source: utmSource,
227-
utm_medium: utmMedium,
228-
utm_campaign: utmCampaign,
229-
utm_content: utmContent,
230-
utm_term: utmTerm,
231-
referrer_path: referrerPath?.substring(0, URL_LENGTH),
232-
referrer_query: referrerQuery?.substring(0, URL_LENGTH),
233-
referrer_domain: referrerDomain?.substring(0, URL_LENGTH),
234-
page_title: pageTitle?.substring(0, PAGE_TITLE_LENGTH),
235-
gclid: gclid,
236-
fbclid: fbclid,
237-
msclkid: msclkid,
238-
ttclid: ttclid,
239-
li_fat_id: lifatid,
240-
twclid: twclid,
235+
url_path: truncate(urlPath, URL_LENGTH),
236+
url_query: truncate(urlQuery, URL_LENGTH),
237+
utm_source: truncate(utmSource, FIELD_VALUE_LENGTH),
238+
utm_medium: truncate(utmMedium, FIELD_VALUE_LENGTH),
239+
utm_campaign: truncate(utmCampaign, FIELD_VALUE_LENGTH),
240+
utm_content: truncate(utmContent, FIELD_VALUE_LENGTH),
241+
utm_term: truncate(utmTerm, FIELD_VALUE_LENGTH),
242+
referrer_path: truncate(referrerPath, URL_LENGTH),
243+
referrer_query: truncate(referrerQuery, URL_LENGTH),
244+
referrer_domain: truncate(referrerDomain, URL_LENGTH),
245+
page_title: truncate(pageTitle, PAGE_TITLE_LENGTH),
246+
gclid: truncate(gclid, FIELD_VALUE_LENGTH),
247+
fbclid: truncate(fbclid, FIELD_VALUE_LENGTH),
248+
msclkid: truncate(msclkid, FIELD_VALUE_LENGTH),
249+
ttclid: truncate(ttclid, FIELD_VALUE_LENGTH),
250+
li_fat_id: truncate(lifatid, FIELD_VALUE_LENGTH),
251+
twclid: truncate(twclid, FIELD_VALUE_LENGTH),
241252
event_type: eventType,
242-
event_name: eventName ? eventName?.substring(0, EVENT_NAME_LENGTH) : null,
243-
tag: tag,
253+
event_name: truncate(eventName, EVENT_NAME_LENGTH) ?? null,
254+
tag: truncate(tag, TAG_LENGTH),
244255
distinct_id: distinctId,
245256
created_at: getUTCString(createdAt),
246257
browser: browser,
247258
os: os,
248259
device: device,
249260
screen: screen,
250261
language: language,
251-
hostname: hostname,
262+
hostname: truncate(hostname, HOSTNAME_LENGTH),
252263
lcp: lcp,
253264
inp: inp,
254265
cls: cls,
@@ -267,8 +278,8 @@ async function clickhouseQuery({
267278
websiteId,
268279
sessionId,
269280
eventId,
270-
urlPath: urlPath?.substring(0, URL_LENGTH),
271-
eventName: eventName?.substring(0, EVENT_NAME_LENGTH),
281+
urlPath: truncate(urlPath, URL_LENGTH),
282+
eventName: truncate(eventName, EVENT_NAME_LENGTH),
272283
eventData,
273284
createdAt,
274285
});

0 commit comments

Comments
 (0)