import dotenv from 'dotenv'; import pg from 'pg'; dotenv.config(); const probeTs = Number(process.argv[2]); const probeRoom = process.argv[3]; const probeHotelId = Number(process.argv[4]); if (!Number.isFinite(probeTs) || !probeRoom || !Number.isFinite(probeHotelId)) { console.error('Usage: node scripts/verifyProbeInDb.js '); process.exit(1); } const pool = new pg.Pool({ host: process.env.POSTGRES_HOST_G5, port: Number(process.env.POSTGRES_PORT_G5 || 5434), user: process.env.POSTGRES_USER_G5, password: process.env.POSTGRES_PASSWORD_G5, database: process.env.POSTGRES_DATABASE_G5, max: 1 }); const main = async () => { const eventResult = await pool.query( `SELECT ts_ms, room_id, app_version, udp_raw FROM rcu_info.rcu_info_events_g5 WHERE ts_ms = $1 AND room_id = $2 ORDER BY write_ts_ms DESC LIMIT 1`, [probeTs, probeRoom] ); const statusResult = await pool.query( `SELECT hotel_id, room_id, app_version, launcher_version, config_version, upgrade_ts_ms, register_ts_ms FROM room_status.room_status_moment_g5 WHERE hotel_id = $1 AND room_id = $2 LIMIT 1`, [probeHotelId, probeRoom] ); console.log(`[probe-db] event_rows=${eventResult.rowCount}`); if (eventResult.rowCount > 0) { const row = eventResult.rows[0]; console.log(`[probe-db] event.ts_ms=${row.ts_ms} room_id=${row.room_id} app_version=${row.app_version}`); console.log(`[probe-db] event.udp_raw=${row.udp_raw}`); } console.log(`[probe-db] room_status_rows=${statusResult.rowCount}`); if (statusResult.rowCount > 0) { const row = statusResult.rows[0]; console.log(`[probe-db] room_status.room_id=${row.room_id} register_ts_ms=${row.register_ts_ms} upgrade_ts_ms=${row.upgrade_ts_ms}`); } else { console.log('[probe-db] room_status row not found (expected behavior when key does not exist)'); } }; main() .then(async () => { await pool.end(); process.exit(0); }) .catch(async (err) => { console.error(`[probe-db] verify failed: ${err.message}`); await pool.end(); process.exit(1); });