@sourceloop/ctrl-plane-tenant-management-service
Version:
Tenant Management microservice for SaaS control plane
49 lines (46 loc) • 1.42 kB
text/typescript
import {Getter, inject} from '@loopback/core';
import {
juggler,
repository,
BelongsToAccessor,
Entity,
} from '@loopback/repository';
import {Tenant, TenantMgmtConfig} from '../models';
import {
DefaultUserModifyCrudRepository,
IAuthUserWithPermissions,
} from '@sourceloop/core';
import {SYSTEM_USER} from '../keys';
import {TenantManagementDbSourceName} from '../types';
import {TenantRepository} from './tenant.repository';
export class TenantMgmtConfigRepository<
T extends TenantMgmtConfig = TenantMgmtConfig,
> extends DefaultUserModifyCrudRepository<
T,
typeof TenantMgmtConfig.prototype.id,
{}
> {
public readonly tenant: BelongsToAccessor<
Tenant,
typeof TenantMgmtConfig.prototype.id
>;
constructor(
.getter(SYSTEM_USER)
public readonly getCurrentUser: Getter<IAuthUserWithPermissions>,
(`datasources.${TenantManagementDbSourceName}`)
dataSource: juggler.DataSource,
.getter('TenantRepository')
protected tenantRepositoryGetter: Getter<TenantRepository>,
('models.TenantMgmtConfig')
private readonly tenantMgmtConfig: typeof Entity & {
prototype: T;
},
) {
super(tenantMgmtConfig, dataSource, getCurrentUser);
this.tenant = this.createBelongsToAccessorFor(
'tenant',
tenantRepositoryGetter,
);
this.registerInclusionResolver('tenant', this.tenant.inclusionResolver);
}
}