-
-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathmikro-orm.module.ts
More file actions
69 lines (58 loc) · 2.67 KB
/
mikro-orm.module.ts
File metadata and controls
69 lines (58 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { Utils, type AnyEntity } from '@mikro-orm/core';
import { Module, type DynamicModule } from '@nestjs/common';
import { MikroOrmCoreModule } from './mikro-orm-core.module';
import { MikroOrmMiddlewareModule } from './mikro-orm-middleware.module';
import { MikroOrmEntitiesStorage } from './mikro-orm.entities.storage';
import { createMikroOrmRepositoryProviders } from './mikro-orm.providers';
import {
EntityName,
MikroOrmModuleAsyncOptions,
MikroOrmModuleFeatureOptions,
MikroOrmModuleSyncOptions,
MikroOrmMiddlewareModuleOptions,
MaybePromise,
} from './typings';
@Module({})
export class MikroOrmModule {
/**
* Clears the entity storage. This is useful for testing purposes, when you want to isolate the tests.
* Keep in mind that this should be called when using a test runner that keeps the context alive between tests (like Vitest with threads disabled).
*/
static clearStorage(contextName?: string) {
MikroOrmEntitiesStorage.clear(contextName);
}
static forRoot(options?: MikroOrmModuleSyncOptions): MaybePromise<DynamicModule>;
static forRoot(options?: MikroOrmModuleSyncOptions[]): MaybePromise<DynamicModule>[];
static forRoot(options?: MikroOrmModuleSyncOptions | MikroOrmModuleSyncOptions[]): MaybePromise<DynamicModule> | MaybePromise<DynamicModule>[] {
if (Array.isArray(options)) {
return options.map(o => MikroOrmCoreModule.forRoot(o));
}
return MikroOrmCoreModule.forRoot(options);
}
static forRootAsync(options: MikroOrmModuleAsyncOptions): MaybePromise<DynamicModule>;
static forRootAsync(options: MikroOrmModuleAsyncOptions[]): MaybePromise<DynamicModule>[];
static forRootAsync(options: MikroOrmModuleAsyncOptions | MikroOrmModuleAsyncOptions[]): MaybePromise<DynamicModule> | MaybePromise<DynamicModule>[] {
if (Array.isArray(options)) {
return options.map(o => MikroOrmCoreModule.forRoot(o));
}
return MikroOrmCoreModule.forRootAsync(options);
}
static forFeature(options: EntityName<AnyEntity>[] | MikroOrmModuleFeatureOptions, contextName?: string): DynamicModule {
const entities = Array.isArray(options) ? options : (options.entities || []);
const name = (Array.isArray(options) || contextName) ? contextName : options.contextName;
const providers = createMikroOrmRepositoryProviders(entities, name);
for (const e of entities) {
if (!Utils.isString(e)) {
MikroOrmEntitiesStorage.addEntity(e, name);
}
}
return {
module: MikroOrmModule,
providers: [...providers],
exports: [...providers],
};
}
static forMiddleware(options?: MikroOrmMiddlewareModuleOptions): DynamicModule {
return MikroOrmMiddlewareModule.forRoot(options);
}
}