From 71f6ccb4db7f17edcd11eea4d7222d9f2f837aaa Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Wed, 25 Jun 2025 05:20:26 -0600 Subject: [PATCH] fix: add validation for missing properties in device status logs --- .../devices-status/services/devices-status.service.ts | 8 +++++++- .../common/src/helper/services/tuya.web.socket.service.ts | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/libs/common/src/firebase/devices-status/services/devices-status.service.ts b/libs/common/src/firebase/devices-status/services/devices-status.service.ts index 3fae855..7bbdd87 100644 --- a/libs/common/src/firebase/devices-status/services/devices-status.service.ts +++ b/libs/common/src/firebase/devices-status/services/devices-status.service.ts @@ -95,7 +95,13 @@ export class DeviceStatusFirebaseService { for (const item of batch) { const device = deviceMap.get(item.deviceTuyaUuid); if (!device?.uuid) continue; - + if (!Array.isArray(item.log?.properties)) { + console.warn( + `🚨 Missing properties for device: ${item.deviceTuyaUuid}`, + ); + console.log('🔍 Problematic item:', JSON.stringify(item, null, 2)); + continue; + } const logs = item.log.properties.map((property) => this.deviceStatusLogRepository.create({ deviceId: device.uuid, diff --git a/libs/common/src/helper/services/tuya.web.socket.service.ts b/libs/common/src/helper/services/tuya.web.socket.service.ts index 1db1991..3bc3bc8 100644 --- a/libs/common/src/helper/services/tuya.web.socket.service.ts +++ b/libs/common/src/helper/services/tuya.web.socket.service.ts @@ -107,6 +107,14 @@ export class TuyaWebSocketService { console.log(`🔁 Processing batch of size: ${batch.length}`); try { + batch.forEach((item, index) => { + if (!Array.isArray(item?.logData?.properties)) { + console.warn( + `❌ Item #${index + 1} has invalid or missing 'properties':`, + ); + console.log(JSON.stringify(item, null, 2)); + } + }); await this.deviceStatusFirebaseService.addBatchDeviceStatusToOurDb( batch?.map((item) => ({ deviceTuyaUuid: item.devId,