mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-14 11:50:31 +00:00
70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import { Container } from 'typedi';
|
|
import { ITenant } from '@/interfaces';
|
|
import { Request } from 'express';
|
|
import TenancyService from '@/services/Tenancy/TenancyService';
|
|
import TenantsManagerService from '@/services/Tenancy/TenantsManager';
|
|
import rtlDetect from 'rtl-detect';
|
|
import { Tenant } from '@/system/models';
|
|
|
|
export default (req: Request, tenant: ITenant) => {
|
|
const { id: tenantId, organizationId } = tenant;
|
|
|
|
const tenantServices = Container.get(TenancyService);
|
|
const tenantsManager = Container.get(TenantsManagerService);
|
|
|
|
// Initialize the knex instance.
|
|
tenantsManager.setupKnexInstance(tenant);
|
|
|
|
const tenantContainer = tenantServices.tenantContainer(tenantId);
|
|
|
|
tenantContainer.set('i18n', injectI18nUtils());
|
|
|
|
const knexInstance = tenantServices.knex(tenantId);
|
|
const models = tenantServices.models(tenantId);
|
|
const repositories = tenantServices.repositories(tenantId);
|
|
const cacheInstance = tenantServices.cache(tenantId);
|
|
|
|
req.knex = knexInstance;
|
|
req.organizationId = organizationId;
|
|
req.tenant = tenant;
|
|
req.tenantId = tenant.id;
|
|
req.models = models;
|
|
req.repositories = repositories;
|
|
req.cache = cacheInstance;
|
|
};
|
|
|
|
export const injectI18nUtils = (req) => {
|
|
const globalI18n = Container.get('i18n');
|
|
const locale = globalI18n.getLocale();
|
|
const direction = rtlDetect.getLangDir(locale);
|
|
|
|
return {
|
|
locale,
|
|
__: globalI18n.__,
|
|
direction,
|
|
isRtl: direction === 'rtl',
|
|
isLtr: direction === 'ltr',
|
|
};
|
|
};
|
|
|
|
export const initalizeTenantServices = async (tenantId: number) => {
|
|
const tenant = await Tenant.query()
|
|
.findById(tenantId)
|
|
.withGraphFetched('metadata')
|
|
.throwIfNotFound();
|
|
|
|
const tenantServices = Container.get(TenancyService);
|
|
const tenantsManager = Container.get(TenantsManagerService);
|
|
|
|
// Initialize the knex instance.
|
|
tenantsManager.setupKnexInstance(tenant);
|
|
|
|
const tenantContainer = tenantServices.tenantContainer(tenantId);
|
|
tenantContainer.set('i18n', injectI18nUtils());
|
|
|
|
tenantServices.knex(tenantId);
|
|
tenantServices.models(tenantId);
|
|
tenantServices.repositories(tenantId);
|
|
tenantServices.cache(tenantId);
|
|
};
|