Провайдер получения задач из couchdb

This commit is contained in:
Pavel Gnedov 2022-05-25 21:42:47 +07:00
parent 70301e90e2
commit 2b2830e656
2 changed files with 11 additions and 6 deletions

View file

@ -6,7 +6,9 @@ import { RedmineTypes } from 'libs/redmine-types';
@Module({}) @Module({})
export class RedmineIssuesCacheWriterModule { export class RedmineIssuesCacheWriterModule {
static register(params: { static register(params: {
issueDocumentScope: nano.DocumentScope<RedmineTypes.Issue>; issueDocumentScopeProvider: () => Promise<
nano.DocumentScope<RedmineTypes.Issue>
>;
}): DynamicModule { }): DynamicModule {
return { return {
module: RedmineIssuesCacheWriterModule, module: RedmineIssuesCacheWriterModule,
@ -14,7 +16,7 @@ export class RedmineIssuesCacheWriterModule {
RedmineIssuesCacheWriterService, RedmineIssuesCacheWriterService,
{ {
provide: 'ISSUE_DOCUMENT_SCOPE', provide: 'ISSUE_DOCUMENT_SCOPE',
useValue: params.issueDocumentScope, useValue: params.issueDocumentScopeProvider,
}, },
], ],
exports: [RedmineIssuesCacheWriterService], exports: [RedmineIssuesCacheWriterService],

View file

@ -7,14 +7,17 @@ import { SaveResponse } from './save-response';
export class RedmineIssuesCacheWriterService { export class RedmineIssuesCacheWriterService {
constructor( constructor(
@Inject('ISSUE_DOCUMENT_SCOPE') @Inject('ISSUE_DOCUMENT_SCOPE')
private issueDb: nano.DocumentScope<RedmineTypes.Issue>, private issueDbProvider: () => Promise<
nano.DocumentScope<RedmineTypes.Issue>
>,
) {} ) {}
async saveIssue(issue: any): Promise<SaveResponse> { async saveIssue(issue: any): Promise<SaveResponse> {
const id = Number(issue['id']); const id = Number(issue['id']);
let prevIssue: (nano.DocumentGetResponse & RedmineTypes.Issue) | null; let prevIssue: (nano.DocumentGetResponse & RedmineTypes.Issue) | null;
const issueDb = await this.issueDbProvider();
try { try {
prevIssue = await this.issueDb.get(String(id)); prevIssue = await issueDb.get(String(id));
} catch (ex) { } catch (ex) {
prevIssue = null; prevIssue = null;
} }
@ -22,12 +25,12 @@ export class RedmineIssuesCacheWriterService {
if (!prevIssue) { if (!prevIssue) {
newIssue = { ...issue }; newIssue = { ...issue };
newIssue._id = String(id); newIssue._id = String(id);
await this.issueDb.insert(newIssue); await issueDb.insert(newIssue);
} else { } else {
const newIssue = { ...issue }; const newIssue = { ...issue };
newIssue._id = String(id); newIssue._id = String(id);
newIssue._rev = prevIssue._rev; newIssue._rev = prevIssue._rev;
await this.issueDb.insert(newIssue); await issueDb.insert(newIssue);
} }
return { return {
prev: prevIssue, prev: prevIssue,