This commit is contained in:
legop3
2025-11-20 15:21:13 -05:00
parent bfdfa33b62
commit ea59a196bb
10 changed files with 296 additions and 56 deletions
+52
View File
@@ -0,0 +1,52 @@
const EventEmitter = require('events');
const logger = require('../globals/logger').child('roomCameraService');
const { loadConfig } = require('../helpers/configLoader');
const events = new EventEmitter();
const config = loadConfig();
const cameraMap = new Map();
function normalizeCamera(camera) {
if (!camera) return null;
const id = camera.id || camera.name;
if (!id) {
logger.warn('Room camera missing id', camera);
return null;
}
return {
id: String(id),
name: camera.name || camera.id || String(id),
description: camera.description || null,
};
}
function loadFromConfig() {
cameraMap.clear();
const list = Array.isArray(config.roomCameras) ? config.roomCameras : [];
list.forEach((camera) => {
const normalized = normalizeCamera(camera);
if (normalized) {
cameraMap.set(normalized.id, normalized);
}
});
logger.info('Loaded room cameras', { count: cameraMap.size });
events.emit('update', getRoomCameras());
}
function getRoomCameras() {
return Array.from(cameraMap.values());
}
function getRoomCamera(id) {
if (!id) return null;
return cameraMap.get(String(id)) || null;
}
loadFromConfig();
module.exports = {
getRoomCameras,
getRoomCamera,
roomCameraEvents: events,
};