11import 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' ;
310import { uuid } from '@/lib/crypto' ;
411import { CLICKHOUSE , PRISMA , runQuery } from '@/lib/db' ;
512import 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+
7283async 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