From ad810d502e6c96b40db51ca179d3a08c25f24d58 Mon Sep 17 00:00:00 2001 From: Yogini Tayade Date: Mon, 5 May 2025 16:13:27 +0530 Subject: [PATCH] refactored the code --- src/telemetry/telemetry-processor.ts | 2 +- src/telemetry/telemetry.middleware.ts | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/telemetry/telemetry-processor.ts b/src/telemetry/telemetry-processor.ts index d892569..ff1df24 100644 --- a/src/telemetry/telemetry-processor.ts +++ b/src/telemetry/telemetry-processor.ts @@ -3,7 +3,7 @@ import { PrismaService } from '../global-services/prisma.service'; import { Logger } from "@nestjs/common"; const prisma = new PrismaService(); -const logger = new Logger('TelemetryProcessor'); +const logger = new Logger('TelemetryProcessor '); const telemetryBatch: any[] = []; const BATCH_INTERVAL = 60000; // 60 seconds diff --git a/src/telemetry/telemetry.middleware.ts b/src/telemetry/telemetry.middleware.ts index 152481c..ca673bb 100644 --- a/src/telemetry/telemetry.middleware.ts +++ b/src/telemetry/telemetry.middleware.ts @@ -5,12 +5,16 @@ import * as si from "systeminformation"; import { PrismaService } from "../global-services/prisma.service"; import fetch from "node-fetch"; import { addToTelemetryBatch } from "./telemetry-processor"; +import { Logger } from "@nestjs/common"; + export async function telemetryMiddleware( request: FastifyRequest, reply: FastifyReply ) { const prisma = new PrismaService(); + const logger = new Logger('Telemetry'); + try { const userId = request.headers["user-id"] as string; @@ -38,8 +42,8 @@ export async function telemetryMiddleware( (/mobile/i.test(userAgent) ? "mobile" : /tablet|iPad/i.test(userAgent) - ? "tablet" - : "desktop"); + ? "tablet" + : "desktop"); const deviceInfo = { did, @@ -55,11 +59,18 @@ export async function telemetryMiddleware( userId, sessionId, }; + logger.log(`DEVICE INFO: ${JSON.stringify(deviceInfo)}`); const userExists = await prisma.user.findUnique({ where: { id: userId }, }); if (userExists) { - await prisma.deviceMetrics.create({ data: deviceInfo }); + const { userId, ...deviceInfoWithoutUserId } = deviceInfo; + await prisma.deviceMetrics.create({ + data: { + ...deviceInfoWithoutUserId, + user: { connect: { id: userId } } + } + }); } else { addToTelemetryBatch(deviceInfo); // use batch }