keeno-tenantmanager
Version:
Implement multiple tenant support for express applications
31 lines (21 loc) • 746 B
JavaScript
// createTenantServices.js
;
const createReadOnlyObject = require("./createReadOnlyObject");
async function createTenantServices(tenant, services = {}) {
for (const key of Object.keys(services)) {
const createService = services[key];
if (!createService || typeof createService !== "function") {
continue;
}
if (tenant[key]) {
throw new Error(`Service "${key}" already exists on tenant.`);
}
// invoke the service creation
const service = await createService(tenant);
// assign the initialized service to the tenant
tenant[key] = service;
}
// return a read only version of the tenant object
return createReadOnlyObject(tenant);
}
module.exports = createTenantServices;