From 2fb145d6714749cda6101ac8c750a8c7bf60f8b7 Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Tue, 17 May 2022 15:57:03 +0700 Subject: [PATCH] Redmine types added --- .../src/redmine-issues-cache-writer.module.ts | 3 +- .../redmine-issues-cache-writer.service.ts | 6 +- libs/redmine-types/index.d.ts | 97 +++++++++++++++++++ libs/redmine-types/index.js | 0 libs/redmine-types/package.json | 12 +++ package.json | 5 +- tsconfig.json | 3 + 7 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 libs/redmine-types/index.d.ts create mode 100644 libs/redmine-types/index.js create mode 100644 libs/redmine-types/package.json 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 41ef441..3eb879c 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,11 +1,12 @@ import { DynamicModule, Module } from '@nestjs/common'; import { RedmineIssuesCacheWriterService } from './redmine-issues-cache-writer.service'; import nano = require('nano'); +import { RedmineTypes } from 'libs/redmine-types'; @Module({}) export class RedmineIssuesCacheWriterModule { static register(params: { - issueDocumentScope: nano.DocumentScope; + issueDocumentScope: nano.DocumentScope; }): DynamicModule { return { module: RedmineIssuesCacheWriterModule, 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 7701021..82cf6fd 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,9 +1,13 @@ import { Inject, Injectable } from '@nestjs/common'; +import { RedmineTypes } from 'libs/redmine-types'; import nano from 'nano'; @Injectable() export class RedmineIssuesCacheWriterService { - constructor(@Inject() private issueDb: nano.DocumentScope) {} + constructor( + @Inject('ISSUE_DOCUMENT_SCOPE') + private issueDb: nano.DocumentScope, + ) {} async saveIssue(issue: any): Promise { const id = Number(issue['id']); diff --git a/libs/redmine-types/index.d.ts b/libs/redmine-types/index.d.ts new file mode 100644 index 0000000..d9a761d --- /dev/null +++ b/libs/redmine-types/index.d.ts @@ -0,0 +1,97 @@ +/// + +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[]; + } + + 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; + } + +} \ No newline at end of file diff --git a/libs/redmine-types/index.js b/libs/redmine-types/index.js new file mode 100644 index 0000000..e69de29 diff --git a/libs/redmine-types/package.json b/libs/redmine-types/package.json new file mode 100644 index 0000000..4df9704 --- /dev/null +++ b/libs/redmine-types/package.json @@ -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" +} diff --git a/package.json b/package.json index 38a963a..95d84e9 100644 --- a/package.json +++ b/package.json @@ -83,5 +83,8 @@ "^@app/event-emitter(|/.*)$": "/libs/event-emitter/src/$1", "^@app/redmine-issues-cache-writer(|/.*)$": "/libs/redmine-issues-cache-writer/src/$1" } - } + }, + "workspaces": [ + "libs/redmine-types" + ] } diff --git a/tsconfig.json b/tsconfig.json index 56f14ad..64215e0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -29,6 +29,9 @@ ], "@app/redmine-issues-cache-writer/*": [ "libs/redmine-issues-cache-writer/src/*" + ], + "@app/redmine-types/*": [ + "libs/redmine-types/*" ] } }