diff --git a/bls-onoffline-backend/dist/index.js b/bls-onoffline-backend/dist/index.js index 87f589f..0911b58 100644 --- a/bls-onoffline-backend/dist/index.js +++ b/bls-onoffline-backend/dist/index.js @@ -660,11 +660,15 @@ const buildRowsFromPayload = (rawPayload) => { const mac = normalizeText(payload.MAC) || ""; const deviceId = normalizeText(payload.HostNumber) || ""; const roomId = normalizeText(payload.RoomNumber) || ""; + let hotelId = payload.HotelCode; + if (typeof hotelId !== "number" || Number.isNaN(hotelId) || hotelId < -32768 || hotelId > 32767) { + hotelId = 0; + } const row = { guid: createGuid(), ts_ms: tsMs, write_ts_ms: Date.now(), - hotel_id: payload.HotelCode, + hotel_id: hotelId, mac, device_id: deviceId, room_id: roomId, diff --git a/bls-onoffline-backend/package-lock.json b/bls-onoffline-backend/package-lock.json index 704306b..5288e54 100644 --- a/bls-onoffline-backend/package-lock.json +++ b/bls-onoffline-backend/package-lock.json @@ -1,11 +1,11 @@ { - "name": "bls-rcu-action-backend", + "name": "bls-onoffline-backend", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "bls-rcu-action-backend", + "name": "bls-onoffline-backend", "version": "1.0.0", "dependencies": { "dotenv": "^16.4.5", diff --git a/bls-onoffline-backend/src/processor/index.js b/bls-onoffline-backend/src/processor/index.js index 1fb6f69..d8d4840 100644 --- a/bls-onoffline-backend/src/processor/index.js +++ b/bls-onoffline-backend/src/processor/index.js @@ -57,11 +57,17 @@ export const buildRowsFromPayload = (rawPayload) => { const deviceId = normalizeText(payload.HostNumber) || ''; const roomId = normalizeText(payload.RoomNumber) || ''; + // Handle hotel_id boundary for PostgreSQL smallint (-32768 to 32767) + let hotelId = payload.HotelCode; + if (typeof hotelId !== 'number' || Number.isNaN(hotelId) || hotelId < -32768 || hotelId > 32767) { + hotelId = 0; + } + const row = { guid: createGuid(), ts_ms: tsMs, write_ts_ms: Date.now(), - hotel_id: payload.HotelCode, + hotel_id: hotelId, mac: mac, device_id: deviceId, room_id: roomId, @@ -90,7 +96,7 @@ export const parseMessageToRows = (message) => { // logger.info('Payload parsed', { payload }); const validationResult = kafkaPayloadSchema.safeParse(payload); - + if (!validationResult.success) { const error = new Error(`Schema Validation Failed: ${JSON.stringify(validationResult.error.errors)}`); error.type = 'VALIDATION_ERROR'; @@ -120,13 +126,13 @@ export const processKafkaMessage = async ({ message, dbManager, config }) => { rowsLength: rows?.length || 0, sampleRow: sample ? { - guid: sample.guid, - ts_ms: sample.ts_ms, - mac: sample.mac, - device_id: sample.device_id, - room_id: sample.room_id, - current_status: sample.current_status - } + guid: sample.guid, + ts_ms: sample.ts_ms, + mac: sample.mac, + device_id: sample.device_id, + room_id: sample.room_id, + current_status: sample.current_status + } : null }; throw error;