From 7c1442e32f5e90399593ec36aa37674a64b54eaf Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 24 Dec 2024 11:56:08 -0800 Subject: [PATCH] Add a service registry --- Server/service/serviceRegistry.js | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Server/service/serviceRegistry.js diff --git a/Server/service/serviceRegistry.js b/Server/service/serviceRegistry.js new file mode 100644 index 000000000..69a3b8be5 --- /dev/null +++ b/Server/service/serviceRegistry.js @@ -0,0 +1,35 @@ +const SERVICE_NAME = "ServiceRegistry"; +import logger from "../utils/logger.js"; +class ServiceRegistry { + static SERVICE_NAME = SERVICE_NAME; + constructor() { + this.services = {}; + } + + register(name, service) { + logger.info({ + message: `Registering service ${name}`, + service: SERVICE_NAME, + method: "register", + }); + this.services[name] = service; + } + + get(name) { + if (!this.services[name]) { + logger.error({ + message: `Service ${name} is not registered`, + service: SERVICE_NAME, + method: "get", + }); + throw new Error(`Service ${name} is not registered`); + } + return this.services[name]; + } + + listServices() { + return Object.keys(this.services); + } +} + +export default new ServiceRegistry();