diff --git a/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.module.ts b/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.module.ts index 9268694..d5bae9b 100644 --- a/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.module.ts +++ b/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.module.ts @@ -6,7 +6,9 @@ import { RedmineTypes } from 'libs/redmine-types'; @Module({}) export class RedmineIssuesCacheWriterModule { static register(params: { - issueDocumentScope: nano.DocumentScope; + issueDocumentScopeProvider: () => Promise< + nano.DocumentScope + >; }): DynamicModule { return { module: RedmineIssuesCacheWriterModule, @@ -14,7 +16,7 @@ export class RedmineIssuesCacheWriterModule { RedmineIssuesCacheWriterService, { provide: 'ISSUE_DOCUMENT_SCOPE', - useValue: params.issueDocumentScope, + useValue: params.issueDocumentScopeProvider, }, ], exports: [RedmineIssuesCacheWriterService], diff --git a/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.service.ts b/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.service.ts index 943a847..4049a46 100644 --- a/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.service.ts +++ b/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.service.ts @@ -7,14 +7,17 @@ import { SaveResponse } from './save-response'; export class RedmineIssuesCacheWriterService { constructor( @Inject('ISSUE_DOCUMENT_SCOPE') - private issueDb: nano.DocumentScope, + private issueDbProvider: () => Promise< + nano.DocumentScope + >, ) {} async saveIssue(issue: any): Promise { const id = Number(issue['id']); let prevIssue: (nano.DocumentGetResponse & RedmineTypes.Issue) | null; + const issueDb = await this.issueDbProvider(); try { - prevIssue = await this.issueDb.get(String(id)); + prevIssue = await issueDb.get(String(id)); } catch (ex) { prevIssue = null; } @@ -22,12 +25,12 @@ export class RedmineIssuesCacheWriterService { if (!prevIssue) { newIssue = { ...issue }; newIssue._id = String(id); - await this.issueDb.insert(newIssue); + await issueDb.insert(newIssue); } else { const newIssue = { ...issue }; newIssue._id = String(id); newIssue._rev = prevIssue._rev; - await this.issueDb.insert(newIssue); + await issueDb.insert(newIssue); } return { prev: prevIssue,