import { DynamicModule, Module } from "@nestjs/common"; import { AI_PROVIDER, AIModule, type AIModuleOptions, type AIProvider, } from "@cv/ai-provider"; import { CVParserService } from "./ai-parser.service"; export const CV_PARSER_SERVICE = Symbol("CV_PARSER_SERVICE"); @Module({}) export class CVParserModule { static forRoot(aiOptions: AIModuleOptions): DynamicModule { return { module: CVParserModule, imports: [AIModule.forRoot(aiOptions)], providers: [ { provide: CV_PARSER_SERVICE, inject: [AI_PROVIDER], useFactory: (aiProvider: AIProvider): CVParserService => new CVParserService(aiProvider), }, ], exports: [CV_PARSER_SERVICE], }; } /** * Resolve the AI provider type from ConfigService at factory time. */ static forConfig(): DynamicModule { return { module: CVParserModule, imports: [AIModule.forConfig()], providers: [ { provide: CV_PARSER_SERVICE, inject: [AI_PROVIDER], useFactory: (aiProvider: AIProvider): CVParserService => new CVParserService(aiProvider), }, ], exports: [CV_PARSER_SERVICE], }; } }