Провайдер получения задач из couchdb
This commit is contained in:
parent
70301e90e2
commit
2b2830e656
2 changed files with 11 additions and 6 deletions
|
|
@ -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],
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue