(payload: IServiceCreateEventPayload)
| 366 | * no-op anyway. |
| 367 | */ |
| 368 | export async function createEvent(payload: IServiceCreateEventPayload) { |
| 369 | if (!payload.profileId && payload.deviceId) { |
| 370 | payload.profileId = payload.deviceId; |
| 371 | } |
| 372 | |
| 373 | const event: IClickhouseEvent = { |
| 374 | id: uuid(), |
| 375 | name: payload.name, |
| 376 | device_id: payload.deviceId, |
| 377 | profile_id: payload.profileId ? String(payload.profileId) : '', |
| 378 | project_id: payload.projectId, |
| 379 | session_id: payload.sessionId, |
| 380 | properties: toDots(payload.properties), |
| 381 | path: payload.path ?? '', |
| 382 | origin: payload.origin ?? '', |
| 383 | created_at: DateTime.fromJSDate(payload.createdAt) |
| 384 | .setZone('UTC') |
| 385 | .toFormat('yyyy-MM-dd HH:mm:ss.SSS'), |
| 386 | country: payload.country ?? '', |
| 387 | city: payload.city ?? '', |
| 388 | region: payload.region ?? '', |
| 389 | longitude: payload.longitude ?? null, |
| 390 | latitude: payload.latitude ?? null, |
| 391 | os: payload.os ?? '', |
| 392 | os_version: payload.osVersion ?? '', |
| 393 | browser: payload.browser ?? '', |
| 394 | browser_version: payload.browserVersion ?? '', |
| 395 | device: payload.device ?? '', |
| 396 | brand: payload.brand ?? '', |
| 397 | model: payload.model ?? '', |
| 398 | duration: payload.duration ?? 0, |
| 399 | referrer: payload.referrer ?? '', |
| 400 | referrer_name: payload.referrerName ?? '', |
| 401 | referrer_type: payload.referrerType ?? '', |
| 402 | imported_at: null, |
| 403 | sdk_name: payload.sdkName ?? '', |
| 404 | sdk_version: payload.sdkVersion ?? '', |
| 405 | revenue: payload.revenue, |
| 406 | groups: payload.groups ?? [], |
| 407 | }; |
| 408 | |
| 409 | eventBuffer.add(event); |
| 410 | |
| 411 | const promises: Promise<unknown>[] = []; |
| 412 | |
| 413 | if (payload.profileId) { |
| 414 | const profile: IServiceUpsertProfile = { |
| 415 | id: String(payload.profileId), |
| 416 | isExternal: payload.profileId !== payload.deviceId, |
| 417 | projectId: payload.projectId, |
| 418 | properties: { |
| 419 | path: payload.path, |
| 420 | country: payload.country, |
| 421 | city: payload.city, |
| 422 | region: payload.region, |
| 423 | longitude: payload.longitude, |
| 424 | latitude: payload.latitude, |
| 425 | os: payload.os, |
no test coverage detected