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 d2f2e12..d5bdaac 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 @@ -14,9 +14,11 @@ export class RedmineIssuesCacheWriterService { >, ) {} - async saveIssue(issue: any): Promise { + async saveIssue(issue: RedmineTypes.Issue): Promise { this.logger.debug( - `Saving issue ${issue?.id || '-'} - ${issue?.subject || '-'}`, + `Saving issue ${issue?.id || '-'} - ${ + issue?.subject || '-' + }, issue data = ${JSON.stringify(issue)}`, ); const id = Number(issue['id']); let prevIssue: (nano.DocumentGetResponse & RedmineTypes.Issue) | null; @@ -28,11 +30,11 @@ export class RedmineIssuesCacheWriterService { } let newIssue: nano.DocumentGetResponse & RedmineTypes.Issue; if (!prevIssue) { - newIssue = { ...issue }; + newIssue = { ...(issue as any) }; newIssue._id = String(id); await issueDb.insert(newIssue); } else { - const newIssue = { ...issue }; + newIssue = { ...(issue as any) }; newIssue._id = String(id); newIssue._rev = prevIssue._rev; await issueDb.insert(newIssue); diff --git a/src/app.module.ts b/src/app.module.ts index 280e1b3..16b94ca 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -11,6 +11,7 @@ import { AppService } from './app.service'; import { Issues } from './datasources/issues'; import configuration from './configs/app'; import { RedmineEventsGateway } from '@app/event-emitter/events/redmine-events.gateway'; +import { RedmineTypes } from '@app/redmine-types/index'; @Module({ imports: [ @@ -34,11 +35,29 @@ export class AppModule implements OnModuleInit { onModuleInit() { const queue = this.redmineEventsGateway.getIssuesChangesQueue(); const subj = queue.queue; - subj.subscribe(async (issue: any) => { - try { - this.redmineIssuesCacheWriterService.saveIssue(issue); - } catch (ex) { - this.logger.error(`Saving issue error - ${ex}`, null, { issue: issue }); + subj.subscribe(async (issues: any) => { + this.logger.debug(`Changed issues = ${JSON.stringify(issues)}`); + + for (let i = 0; i < issues.length; i++) { + const issue: RedmineTypes.Issue = issues[i]; + + try { + this.logger.debug( + `Save issue #${issue.id} - ${JSON.stringify(issue)}`, + ); + + const response = await this.redmineIssuesCacheWriterService.saveIssue( + issue, + ); + + this.logger.debug( + `Save issue #${issue.id} response = ${JSON.stringify(response)}`, + ); + } catch (ex) { + this.logger.error(`Saving issue error - ${ex}`, null, { + issue: issue, + }); + } } }); }