Files
Checkmate/server/src/service/system/serviceRegistry.js
Alex Holliday 1c47c8ce2c move to src
2025-07-25 15:33:48 -07:00

40 lines
788 B
JavaScript
Executable File

const SERVICE_NAME = "ServiceRegistry";
import logger from "../../utils/logger.js";
class ServiceRegistry {
static SERVICE_NAME = SERVICE_NAME;
constructor() {
this.services = {};
}
get serviceName() {
return ServiceRegistry.SERVICE_NAME;
}
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();