diff --git a/libs/redmine-data-loader/src/index.ts b/libs/redmine-data-loader/src/index.ts new file mode 100644 index 0000000..e59bee4 --- /dev/null +++ b/libs/redmine-data-loader/src/index.ts @@ -0,0 +1,2 @@ +export * from './redmine-data-loader.module'; +export * from './redmine-data-loader.service'; diff --git a/libs/redmine-data-loader/src/redmine-data-loader.module.ts b/libs/redmine-data-loader/src/redmine-data-loader.module.ts new file mode 100644 index 0000000..3a6ade6 --- /dev/null +++ b/libs/redmine-data-loader/src/redmine-data-loader.module.ts @@ -0,0 +1,32 @@ +import { RedmineTypes } from '@app/redmine-types/index'; +import { DynamicModule, Module } from '@nestjs/common'; +import nano from 'nano'; +import { RedmineDataLoaderService } from './redmine-data-loader.service'; + +@Module({}) +export class RedmineDataLoaderModule { + static register(params: { + issueDocumentScopeProvider: () => Promise< + nano.DocumentScope + >; + userDocumentScopeProvider: () => Promise< + nano.DocumentScope + >; + }): DynamicModule { + return { + module: RedmineDataLoaderModule, + providers: [ + RedmineDataLoaderService, + { + provide: 'ISSUE_DOCUMENT_SCOPE', + useValue: params.issueDocumentScopeProvider, + }, + { + provide: 'USER_DOCUMENT_SCOPE', + useValue: params.userDocumentScopeProvider, + }, + ], + exports: [RedmineDataLoaderService], + }; + } +} diff --git a/libs/redmine-data-loader/src/redmine-data-loader.service.ts b/libs/redmine-data-loader/src/redmine-data-loader.service.ts new file mode 100644 index 0000000..2c41a71 --- /dev/null +++ b/libs/redmine-data-loader/src/redmine-data-loader.service.ts @@ -0,0 +1,4 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class RedmineDataLoaderService {} diff --git a/libs/redmine-data-loader/tsconfig.lib.json b/libs/redmine-data-loader/tsconfig.lib.json new file mode 100644 index 0000000..a29bb5d --- /dev/null +++ b/libs/redmine-data-loader/tsconfig.lib.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "../../dist/libs/redmine-data-loader" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff --git a/nest-cli.json b/nest-cli.json index 67abf89..6d72db5 100644 --- a/nest-cli.json +++ b/nest-cli.json @@ -19,6 +19,15 @@ "compilerOptions": { "tsConfigPath": "libs/redmine-issues-cache-writer/tsconfig.lib.json" } + }, + "redmine-data-loader": { + "type": "library", + "root": "libs/redmine-data-loader", + "entryFile": "index", + "sourceRoot": "libs/redmine-data-loader/src", + "compilerOptions": { + "tsConfigPath": "libs/redmine-data-loader/tsconfig.lib.json" + } } }, "compilerOptions": { diff --git a/package.json b/package.json index 95d84e9..6b8446a 100644 --- a/package.json +++ b/package.json @@ -81,10 +81,11 @@ ], "moduleNameMapper": { "^@app/event-emitter(|/.*)$": "/libs/event-emitter/src/$1", - "^@app/redmine-issues-cache-writer(|/.*)$": "/libs/redmine-issues-cache-writer/src/$1" + "^@app/redmine-issues-cache-writer(|/.*)$": "/libs/redmine-issues-cache-writer/src/$1", + "^@app/redmine-data-loader(|/.*)$": "/libs/redmine-data-loader/src/$1" } }, "workspaces": [ "libs/redmine-types" ] -} +} \ No newline at end of file diff --git a/src/app.module.ts b/src/app.module.ts index fe49782..ed35cad 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -14,6 +14,7 @@ import { RedmineEventsGateway } from '@app/event-emitter/events/redmine-events.g import { RedmineTypes } from '@app/redmine-types/index'; import { CouchDb } from './datasources/couchdb'; import { Users } from './datasources/users'; +import { RedmineDataLoaderModule } from '@app/redmine-data-loader'; @Module({ imports: [ @@ -22,6 +23,10 @@ import { Users } from './datasources/users'; issueDocumentScopeProvider: Issues.getDatasource, }), ConfigModule.forRoot({ load: [configuration] }), + RedmineDataLoaderModule.register({ + issueDocumentScopeProvider: Issues.getDatasource, + userDocumentScopeProvider: Users.getDatasource, + }), ], controllers: [AppController, MainController], providers: [AppService, Issues, CouchDb, Users], diff --git a/test/jest-e2e.json b/test/jest-e2e.json index 7838ecc..1851795 100644 --- a/test/jest-e2e.json +++ b/test/jest-e2e.json @@ -14,6 +14,8 @@ "@app/event-emitter/(.*)": "/../libs/event-emitter/src/$1", "@app/event-emitter": "/../libs/event-emitter/src", "@app/redmine-issues-cache-writer/(.*)": "/../libs/redmine-issues-cache-writer/src/$1", - "@app/redmine-issues-cache-writer": "/../libs/redmine-issues-cache-writer/src" + "@app/redmine-issues-cache-writer": "/../libs/redmine-issues-cache-writer/src", + "@app/redmine-data-loader/(.*)": "/../libs/redmine-data-loader/src/$1", + "@app/redmine-data-loader": "/../libs/redmine-data-loader/src" } } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 64215e0..bb172b6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,6 +32,12 @@ ], "@app/redmine-types/*": [ "libs/redmine-types/*" + ], + "@app/redmine-data-loader": [ + "libs/redmine-data-loader/src" + ], + "@app/redmine-data-loader/*": [ + "libs/redmine-data-loader/src/*" ] } }