@rytass/cms-base-nestjs-module
Version:
Rytass Content Management System NestJS Base Module
53 lines (50 loc) • 2.11 kB
JavaScript
import { DataSource } from 'typeorm';
import { PROVIDE_ARTICLE_ENTITY, RESOLVED_ARTICLE_REPO, PROVIDE_ARTICLE_VERSION_ENTITY, RESOLVED_ARTICLE_VERSION_REPO, PROVIDE_ARTICLE_VERSION_CONTENT_ENTITY, RESOLVED_ARTICLE_VERSION_CONTENT_REPO, PROVIDE_CATEGORY_ENTITY, RESOLVED_CATEGORY_REPO, PROVIDE_CATEGORY_MULTI_LANGUAGE_NAME_ENTITY, RESOLVED_CATEGORY_MULTI_LANGUAGE_NAME_REPO, PROVIDE_SIGNATURE_LEVEL_ENTITY, RESOLVED_SIGNATURE_LEVEL_REPO } from '../typings/cms-base-providers.js';
import { BaseArticleRepo } from '../models/base-article.entity.js';
import { BaseArticleVersionRepo } from '../models/base-article-version.entity.js';
import { BaseArticleVersionContentRepo } from '../models/base-article-version-content.entity.js';
import { BaseCategoryRepo } from '../models/base-category.entity.js';
import { BaseSignatureLevelRepo } from '../models/base-signature-level.entity.js';
import { BaseCategoryMultiLanguageNameRepo } from '../models/base-category-multi-language-name.entity.js';
const TARGETS = [
[
BaseArticleRepo,
PROVIDE_ARTICLE_ENTITY,
RESOLVED_ARTICLE_REPO
],
[
BaseArticleVersionRepo,
PROVIDE_ARTICLE_VERSION_ENTITY,
RESOLVED_ARTICLE_VERSION_REPO
],
[
BaseArticleVersionContentRepo,
PROVIDE_ARTICLE_VERSION_CONTENT_ENTITY,
RESOLVED_ARTICLE_VERSION_CONTENT_REPO
],
[
BaseCategoryRepo,
PROVIDE_CATEGORY_ENTITY,
RESOLVED_CATEGORY_REPO
],
[
BaseCategoryMultiLanguageNameRepo,
PROVIDE_CATEGORY_MULTI_LANGUAGE_NAME_ENTITY,
RESOLVED_CATEGORY_MULTI_LANGUAGE_NAME_REPO
],
[
BaseSignatureLevelRepo,
PROVIDE_SIGNATURE_LEVEL_ENTITY,
RESOLVED_SIGNATURE_LEVEL_REPO
]
];
const ResolvedRepoProviders = TARGETS.map(([repo, provide, resolved])=>({
provide: resolved,
useFactory: (baseRepo, entity, dataSource)=>entity ? dataSource.getRepository(entity) : baseRepo,
inject: [
repo,
provide,
DataSource
]
}));
export { ResolvedRepoProviders, TARGETS };