From c4dea0c3db0041d00577a6e6aab309064243476f Mon Sep 17 00:00:00 2001 From: Yogini Tayade Date: Wed, 7 May 2025 12:32:17 +0530 Subject: [PATCH] applied nullable constraint to every field of the DeviceMetrics --- .../migration.sql | 16 +++++++++++ prisma/schema.prisma | 28 +++++++++---------- src/telemetry/telemetryMiddleware.ts | 13 +++++++-- 3 files changed, 40 insertions(+), 17 deletions(-) create mode 100644 prisma/migrations/20250507063506_update_device_metrics_table/migration.sql diff --git a/prisma/migrations/20250507063506_update_device_metrics_table/migration.sql b/prisma/migrations/20250507063506_update_device_metrics_table/migration.sql new file mode 100644 index 0000000..5bb151a --- /dev/null +++ b/prisma/migrations/20250507063506_update_device_metrics_table/migration.sql @@ -0,0 +1,16 @@ +-- DropForeignKey +ALTER TABLE "DeviceMetrics" DROP CONSTRAINT "DeviceMetrics_userId_fkey"; + +-- AlterTable +ALTER TABLE "DeviceMetrics" ALTER COLUMN "did" DROP NOT NULL, +ALTER COLUMN "browserName" DROP NOT NULL, +ALTER COLUMN "osName" DROP NOT NULL, +ALTER COLUMN "deviceType" DROP NOT NULL, +ALTER COLUMN "deviceName" DROP NOT NULL, +ALTER COLUMN "sessionId" DROP NOT NULL, +ALTER COLUMN "createdAt" DROP NOT NULL, +ALTER COLUMN "language" DROP NOT NULL, +ALTER COLUMN "userId" DROP NOT NULL; + +-- AddForeignKey +ALTER TABLE "DeviceMetrics" ADD CONSTRAINT "DeviceMetrics_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3eb0c6e..245ad64 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -122,20 +122,20 @@ model BiharKrishiMetrics { @@index([createdAt]) } model DeviceMetrics { - id String @id @default(uuid()) - did String - sessionId String - userId String @db.Uuid - deviceType String - deviceName String - browserName String - osName String + id String @id @default(uuid()) + did String? + sessionId String? + userId String? @db.Uuid + deviceType String? + deviceName String? + browserName String? + osName String? latitude Float? - longitude Float? + longitude Float? state String? district String? - language String - createdAt DateTime @default(now()) - - user User @relation(fields: [userId], references: [id]) -} \ No newline at end of file + language String? + createdAt DateTime? @default(now()) + + user User? @relation(fields: [userId], references: [id]) +} diff --git a/src/telemetry/telemetryMiddleware.ts b/src/telemetry/telemetryMiddleware.ts index e082d89..9530973 100644 --- a/src/telemetry/telemetryMiddleware.ts +++ b/src/telemetry/telemetryMiddleware.ts @@ -66,9 +66,16 @@ export async function telemetryMiddleware( sessionId, }; logger.log(`DEVICE INFO: ${JSON.stringify(deviceInfo)}`); - const userExists = await prisma.user.findUnique({ - where: { id: userId }, - }); + let userExists; + if (userId) { + userExists = await prisma.user.findUnique({ + where: { id: userId }, + }); + } else { + // handle the case where userId is not present + console.warn("userId is undefined, skipping user lookup"); + } + if (userExists) { const { userId, ...deviceInfoWithoutUserId } = deviceInfo; await prisma.deviceMetrics.create({