diff --git a/lib/typeorm.custom.repository.ts b/lib/typeorm.custom.repository.ts new file mode 100644 index 000000000..dfb5741cc --- /dev/null +++ b/lib/typeorm.custom.repository.ts @@ -0,0 +1,33 @@ +import {EntityClassOrSchema} from "./interfaces/entity-class-or-schema.type"; +import {AbstractRepository, getMetadataArgsStorage, Repository} from "typeorm"; + + +export function getCustomRepositoryEntity(entities: EntityClassOrSchema[]): Array { + let customRepositoryEntities = new Array(); + for (let entity of entities) { + if ( + entity instanceof Function && + (entity.prototype instanceof Repository || + entity.prototype instanceof AbstractRepository) + ) { + const entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find( + (repository) => { + return ( + repository.target === + (entity instanceof Function + ? entity + : (entity as any).constructor) + ); + }, + ); + if (entityRepositoryMetadataArgs) { + if ( + entities.indexOf(entityRepositoryMetadataArgs.entity) === -1 + ) { + customRepositoryEntities.push(entityRepositoryMetadataArgs.entity); + } + } + } + } + return customRepositoryEntities; +} diff --git a/lib/typeorm.module.ts b/lib/typeorm.module.ts index bd51f574c..565b5e9c9 100644 --- a/lib/typeorm.module.ts +++ b/lib/typeorm.module.ts @@ -1,21 +1,12 @@ -import { DynamicModule, Module } from '@nestjs/common'; -import { - AbstractRepository, - Connection, - ConnectionOptions, - EntitySchema, - getMetadataArgsStorage, - Repository, -} from 'typeorm'; -import { EntitiesMetadataStorage } from './entities-metadata.storage'; -import { EntityClassOrSchema } from './interfaces/entity-class-or-schema.type'; -import { - TypeOrmModuleAsyncOptions, - TypeOrmModuleOptions, -} from './interfaces/typeorm-options.interface'; -import { TypeOrmCoreModule } from './typeorm-core.module'; -import { DEFAULT_CONNECTION_NAME } from './typeorm.constants'; -import { createTypeOrmProviders } from './typeorm.providers'; +import {DynamicModule, Module} from '@nestjs/common'; +import {Connection, ConnectionOptions,} from 'typeorm'; +import {EntitiesMetadataStorage} from './entities-metadata.storage'; +import {EntityClassOrSchema} from './interfaces/entity-class-or-schema.type'; +import {TypeOrmModuleAsyncOptions, TypeOrmModuleOptions,} from './interfaces/typeorm-options.interface'; +import {TypeOrmCoreModule} from './typeorm-core.module'; +import {DEFAULT_CONNECTION_NAME} from './typeorm.constants'; +import {createTypeOrmProviders} from './typeorm.providers'; +import {getCustomRepositoryEntity} from "./typeorm.custom.repository"; @Module({}) export class TypeOrmModule { @@ -34,32 +25,7 @@ export class TypeOrmModule { | string = DEFAULT_CONNECTION_NAME, ): DynamicModule { const providers = createTypeOrmProviders(entities, connection); - let customRepositoryEntities = []; - for (let entity of entities) { - if ( - entity instanceof Function && - (entity.prototype instanceof Repository || - entity.prototype instanceof AbstractRepository) - ) { - const entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find( - (repository) => { - return ( - repository.target === - (entity instanceof Function - ? entity - : (entity as any).constructor) - ); - }, - ); - if (entityRepositoryMetadataArgs) { - if ( - entities.indexOf(entityRepositoryMetadataArgs.entity) === -1 - ) { - customRepositoryEntities.push(entityRepositoryMetadataArgs.entity); - } - } - } - } + let customRepositoryEntities = getCustomRepositoryEntity(entities); EntitiesMetadataStorage.addEntitiesByConnection(connection, [ ...entities, ...customRepositoryEntities,