Method "saveIssue" created

This commit is contained in:
Pavel Gnedov 2022-05-17 14:08:13 +07:00
parent 7041348e0e
commit 755eecdeed
4 changed files with 45 additions and 27 deletions

View file

@ -1,4 +1,5 @@
{ {
"singleQuote": true, "singleQuote": true,
"trailingComma": "all" "trailingComma": "all",
"endOfLine": "auto"
} }

View file

@ -1,8 +1,22 @@
import { Module } from '@nestjs/common'; import { DynamicModule, Module } from '@nestjs/common';
import { RedmineIssuesCacheWriterService } from './redmine-issues-cache-writer.service'; import { RedmineIssuesCacheWriterService } from './redmine-issues-cache-writer.service';
import nano = require('nano');
@Module({ @Module({})
providers: [RedmineIssuesCacheWriterService], export class RedmineIssuesCacheWriterModule {
exports: [RedmineIssuesCacheWriterService], static register(params: {
}) issueDocumentScope: nano.DocumentScope<any>;
export class RedmineIssuesCacheWriterModule {} }): DynamicModule {
return {
module: RedmineIssuesCacheWriterModule,
providers: [
RedmineIssuesCacheWriterService,
{
provide: 'ISSUE_DOCUMENT_SCOPE',
useValue: params.issueDocumentScope,
},
],
exports: [],
};
}
}

View file

@ -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>(RedmineIssuesCacheWriterService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});

View file

@ -1,4 +1,25 @@
import { Injectable } from '@nestjs/common'; import { Inject, Injectable } from '@nestjs/common';
import nano from 'nano';
@Injectable() @Injectable()
export class RedmineIssuesCacheWriterService {} export class RedmineIssuesCacheWriterService {
constructor(@Inject() private issueDb: nano.DocumentScope<any>) {}
async saveIssue(issue: any): Promise<void> {
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);
}
}
}