Redmine types added
This commit is contained in:
parent
755eecdeed
commit
2fb145d671
7 changed files with 123 additions and 3 deletions
|
|
@ -1,11 +1,12 @@
|
||||||
import { DynamicModule, 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');
|
import nano = require('nano');
|
||||||
|
import { RedmineTypes } from 'libs/redmine-types';
|
||||||
|
|
||||||
@Module({})
|
@Module({})
|
||||||
export class RedmineIssuesCacheWriterModule {
|
export class RedmineIssuesCacheWriterModule {
|
||||||
static register(params: {
|
static register(params: {
|
||||||
issueDocumentScope: nano.DocumentScope<any>;
|
issueDocumentScope: nano.DocumentScope<RedmineTypes.Issue>;
|
||||||
}): DynamicModule {
|
}): DynamicModule {
|
||||||
return {
|
return {
|
||||||
module: RedmineIssuesCacheWriterModule,
|
module: RedmineIssuesCacheWriterModule,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
|
import { RedmineTypes } from 'libs/redmine-types';
|
||||||
import nano from 'nano';
|
import nano from 'nano';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class RedmineIssuesCacheWriterService {
|
export class RedmineIssuesCacheWriterService {
|
||||||
constructor(@Inject() private issueDb: nano.DocumentScope<any>) {}
|
constructor(
|
||||||
|
@Inject('ISSUE_DOCUMENT_SCOPE')
|
||||||
|
private issueDb: nano.DocumentScope<RedmineTypes.Issue>,
|
||||||
|
) {}
|
||||||
|
|
||||||
async saveIssue(issue: any): Promise<void> {
|
async saveIssue(issue: any): Promise<void> {
|
||||||
const id = Number(issue['id']);
|
const id = Number(issue['id']);
|
||||||
|
|
|
||||||
97
libs/redmine-types/index.d.ts
vendored
Normal file
97
libs/redmine-types/index.d.ts
vendored
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
/// <reference types="typescript" />
|
||||||
|
|
||||||
|
export module RedmineTypes {
|
||||||
|
|
||||||
|
export type IdAndName = {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type CustomField = {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
value: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JournalDetail = {
|
||||||
|
property: string;
|
||||||
|
name: string;
|
||||||
|
old_value: string;
|
||||||
|
new_value: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Journal = {
|
||||||
|
id: number;
|
||||||
|
user: IdAndName;
|
||||||
|
notes: string;
|
||||||
|
created_on: string;
|
||||||
|
details?: JournalDetail[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Issue = {
|
||||||
|
id: number;
|
||||||
|
project: IdAndName;
|
||||||
|
tracker: IdAndName;
|
||||||
|
status: IdAndName;
|
||||||
|
priority: IdAndName;
|
||||||
|
author: IdAndName;
|
||||||
|
category: IdAndName;
|
||||||
|
fixed_version: IdAndName;
|
||||||
|
subject: string;
|
||||||
|
description: string;
|
||||||
|
start_date: string;
|
||||||
|
done_ratio: number;
|
||||||
|
spent_hours: number;
|
||||||
|
total_spent_hours: number;
|
||||||
|
custom_fields: CustomField[];
|
||||||
|
created_on: string;
|
||||||
|
updated_on?: string;
|
||||||
|
closed_on?: string;
|
||||||
|
relations?: Record<string, any>[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export module Unknown {
|
||||||
|
export const num = -1;
|
||||||
|
export const str = '';
|
||||||
|
export const idAndName: IdAndName = {
|
||||||
|
id: -1,
|
||||||
|
name: str
|
||||||
|
};
|
||||||
|
export const unknownName = 'Unknown';
|
||||||
|
export const subject = 'Unknown';
|
||||||
|
export const date = '1970-01-01T00:00:00Z';
|
||||||
|
export const issue: Issue = {
|
||||||
|
id: num,
|
||||||
|
project: idAndName,
|
||||||
|
tracker: idAndName,
|
||||||
|
status: idAndName,
|
||||||
|
priority: idAndName,
|
||||||
|
author: idAndName,
|
||||||
|
category: idAndName,
|
||||||
|
fixed_version: idAndName,
|
||||||
|
subject: subject,
|
||||||
|
description: str,
|
||||||
|
start_date: date,
|
||||||
|
done_ratio: num,
|
||||||
|
spent_hours: num,
|
||||||
|
total_spent_hours: num,
|
||||||
|
custom_fields: [],
|
||||||
|
created_on: date
|
||||||
|
};
|
||||||
|
|
||||||
|
export const user: User = {
|
||||||
|
id: num,
|
||||||
|
firstname: unknownName,
|
||||||
|
lastname: unknownName,
|
||||||
|
mail: str
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export type User = {
|
||||||
|
id: number;
|
||||||
|
firstname: string;
|
||||||
|
lastname: string;
|
||||||
|
mail: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
0
libs/redmine-types/index.js
Normal file
0
libs/redmine-types/index.js
Normal file
12
libs/redmine-types/package.json
Normal file
12
libs/redmine-types/package.json
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"name": "redmine-types",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"types": "index.d.ts",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "Pavel Gnedov",
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
|
|
@ -83,5 +83,8 @@
|
||||||
"^@app/event-emitter(|/.*)$": "<rootDir>/libs/event-emitter/src/$1",
|
"^@app/event-emitter(|/.*)$": "<rootDir>/libs/event-emitter/src/$1",
|
||||||
"^@app/redmine-issues-cache-writer(|/.*)$": "<rootDir>/libs/redmine-issues-cache-writer/src/$1"
|
"^@app/redmine-issues-cache-writer(|/.*)$": "<rootDir>/libs/redmine-issues-cache-writer/src/$1"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"workspaces": [
|
||||||
|
"libs/redmine-types"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,9 @@
|
||||||
],
|
],
|
||||||
"@app/redmine-issues-cache-writer/*": [
|
"@app/redmine-issues-cache-writer/*": [
|
||||||
"libs/redmine-issues-cache-writer/src/*"
|
"libs/redmine-issues-cache-writer/src/*"
|
||||||
|
],
|
||||||
|
"@app/redmine-types/*": [
|
||||||
|
"libs/redmine-types/*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue