Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions lib/interfaces/typeorm-options.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ export type TypeOrmModuleOptions = {
* If `true`, will show verbose error messages on each connection retry.
*/
verboseRetryLog?: boolean;
/**
* If `true` database initialization will not be performed during module initialization.
* This means that database connection will not be established and migrations will not run.
* Database initialization will have to be performed manually using `DataSource.initialize`
* and it will have to implement own retry mechanism (if necessary).
*/
manualInitialization?: boolean;
} & Partial<DataSourceOptions>;

export interface TypeOrmOptionsFactory {
Expand Down
36 changes: 16 additions & 20 deletions lib/typeorm-core.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,32 +213,28 @@ export class TypeOrmCoreModule implements OnApplicationShutdown {
});
return await lastValueFrom(
defer(async () => {
let dataSource: DataSource;
if (!options.autoLoadEntities) {
const dataSource = await createTypeormDataSource(
dataSource = await createTypeormDataSource(
options as DataSourceOptions,
);
// TODO: remove "dataSource.initialize" condition (left for backward compatibility)
return (dataSource as any).initialize && !dataSource.isInitialized
? dataSource.initialize()
: dataSource;
}

let entities = options.entities;
if (Array.isArray(entities)) {
entities = entities.concat(
EntitiesMetadataStorage.getEntitiesByDataSource(dataSourceToken),
);
} else {
entities =
EntitiesMetadataStorage.getEntitiesByDataSource(dataSourceToken);
let entities = options.entities;
if (Array.isArray(entities)) {
entities = entities.concat(
EntitiesMetadataStorage.getEntitiesByDataSource(dataSourceToken),
);
} else {
entities =
EntitiesMetadataStorage.getEntitiesByDataSource(dataSourceToken);
}
dataSource = await createTypeormDataSource({
...options,
entities,
} as DataSourceOptions);
}
const dataSource = await createTypeormDataSource({
...options,
entities,
} as DataSourceOptions);

// TODO: remove "dataSource.initialize" condition (left for backward compatibility)
return (dataSource as any).initialize && !dataSource.isInitialized
return (dataSource as any).initialize && !dataSource.isInitialized && !options.manualInitialization
? dataSource.initialize()
: dataSource;
}).pipe(
Expand Down