@willsoto/nestjs-objection
Version:
Objection module for NestJS
50 lines (45 loc) • 1.2 kB
text/typescript
import { DynamicModule, Module, Provider } from "@nestjs/common";
import { Model } from "objection";
import { ObjectionCoreModule } from "./core";
import {
ObjectionModuleAsyncOptions,
ObjectionModuleOptions,
} from "./interfaces";
@Module({})
export class ObjectionModule {
public static register(options: ObjectionModuleOptions): DynamicModule {
return {
module: ObjectionModule,
imports: [ObjectionCoreModule.register(options)],
exports: [ObjectionCoreModule],
};
}
public static registerAsync(
options: ObjectionModuleAsyncOptions,
): DynamicModule {
return {
module: ObjectionModule,
imports: [ObjectionCoreModule.registerAsync(options)],
exports: [ObjectionCoreModule],
};
}
public static forFeature(models: (typeof Model)[]): DynamicModule {
const modelProviders: Provider[] = models.flatMap((model) => {
return [
{
useValue: model,
provide: model,
},
{
useValue: model,
provide: model.name,
},
];
});
return {
module: ObjectionModule,
providers: modelProviders,
exports: modelProviders,
};
}
}