From 755eecdeedf1ceb17489129c400b3922c9fea7f2 Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Tue, 17 May 2022 14:08:13 +0700 Subject: [PATCH] Method "saveIssue" created --- .prettierrc | 3 ++- .../src/redmine-issues-cache-writer.module.ts | 26 ++++++++++++++----- ...edmine-issues-cache-writer.service.spec.ts | 18 ------------- .../redmine-issues-cache-writer.service.ts | 25 ++++++++++++++++-- 4 files changed, 45 insertions(+), 27 deletions(-) delete mode 100644 libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.service.spec.ts diff --git a/.prettierrc b/.prettierrc index dcb7279..9d36f26 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,5 @@ { "singleQuote": true, - "trailingComma": "all" + "trailingComma": "all", + "endOfLine": "auto" } \ No newline at end of file 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 5c447bb..41ef441 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 @@ -1,8 +1,22 @@ -import { Module } from '@nestjs/common'; +import { DynamicModule, Module } from '@nestjs/common'; import { RedmineIssuesCacheWriterService } from './redmine-issues-cache-writer.service'; +import nano = require('nano'); -@Module({ - providers: [RedmineIssuesCacheWriterService], - exports: [RedmineIssuesCacheWriterService], -}) -export class RedmineIssuesCacheWriterModule {} +@Module({}) +export class RedmineIssuesCacheWriterModule { + static register(params: { + issueDocumentScope: nano.DocumentScope; + }): DynamicModule { + return { + module: RedmineIssuesCacheWriterModule, + providers: [ + RedmineIssuesCacheWriterService, + { + provide: 'ISSUE_DOCUMENT_SCOPE', + useValue: params.issueDocumentScope, + }, + ], + exports: [], + }; + } +} diff --git a/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.service.spec.ts b/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.service.spec.ts deleted file mode 100644 index 9bb6feb..0000000 --- a/libs/redmine-issues-cache-writer/src/redmine-issues-cache-writer.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RedmineIssuesCacheWriterService } from './redmine-issues-cache-writer.service'; - -describe('RedmineIssuesCacheWriterService', () => { - let service: RedmineIssuesCacheWriterService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [RedmineIssuesCacheWriterService], - }).compile(); - - service = module.get(RedmineIssuesCacheWriterService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); 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 867f474..7701021 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 @@ -1,4 +1,25 @@ -import { Injectable } from '@nestjs/common'; +import { Inject, Injectable } from '@nestjs/common'; +import nano from 'nano'; @Injectable() -export class RedmineIssuesCacheWriterService {} +export class RedmineIssuesCacheWriterService { + constructor(@Inject() private issueDb: nano.DocumentScope) {} + + async saveIssue(issue: any): Promise { + const id = Number(issue['id']); + let prevIssue; + try { + prevIssue = await this.issueDb.get(String(id)); + } catch (ex) { + prevIssue = null; + } + if (!prevIssue) { + await this.issueDb.insert({ _id: String(id), ...issue }); + } else { + const newIssue = issue; + newIssue._id = String(id); + newIssue._rev = prevIssue._rev; + await this.issueDb.insert(newIssue); + } + } +}