diff --git a/libs/event-emitter/src/issues/issues.controller.ts b/libs/event-emitter/src/issues/issues.controller.ts index 4020a6a..608f21e 100644 --- a/libs/event-emitter/src/issues/issues.controller.ts +++ b/libs/event-emitter/src/issues/issues.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Get, Param } from '@nestjs/common'; +import { Body, Controller, Get, Param, Post } from '@nestjs/common'; import { RedmineTypes } from '../models/redmine-types'; import { IssuesService } from './issues.service'; @@ -6,6 +6,11 @@ import { IssuesService } from './issues.service'; export class IssuesController { constructor(private issuesService: IssuesService) {} + @Post('find') + async find(@Body() params: any): Promise { + return await this.issuesService.find(params); + } + @Get(':id') async getIssue(@Param('id') id: number): Promise { return await this.issuesService.getIssue(id); diff --git a/libs/event-emitter/src/issues/issues.service.ts b/libs/event-emitter/src/issues/issues.service.ts index 6f50d51..8358be7 100644 --- a/libs/event-emitter/src/issues/issues.service.ts +++ b/libs/event-emitter/src/issues/issues.service.ts @@ -5,6 +5,7 @@ import { RedmineEventsGateway } from '../events/redmine-events.gateway'; import { RedmineIssuesCacheWriterService } from '../issue-cache-writer/redmine-issues-cache-writer.service'; import { RedmineDataLoader } from '../redmine-data-loader/redmine-data-loader'; import { MemoryCache } from '../utils/memory-cache'; +import nano from 'nano'; export const ISSUE_MEMORY_CACHE_LIFETIME = 30 * 1000; const ISSUE_MEMORY_CACHE_AUTOCLEAN_INTERVAL = 1000 * 60 * 5; @@ -25,6 +26,12 @@ export class IssuesService { private redmineEventsGateway: RedmineEventsGateway, ) {} + async find(query: nano.MangoQuery): Promise { + const issueDb = await this.issues.getDatasource(); + const res = await issueDb.find(query); + return res.docs; + } + async getIssue( issueId: number, force = false,