From 2687062906433ea662c1cc51a805a99abbe8f125 Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Tue, 3 Oct 2023 08:07:16 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B5=D0=BD=D0=B4=D0=BF=D0=BE=D0=B8=D0=BD=D1=82=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D1=85=20=D0=B4=D0=B0=D1=88=D0=B1=D0=BE=D1=80?= =?UTF-8?q?=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/dashboards/dashboards.controller.ts | 18 ++++++++++++++++++ .../src/dashboards/dashboards.service.ts | 15 +++++++++++++++ libs/event-emitter/src/event-emitter.module.ts | 2 ++ 3 files changed, 35 insertions(+) create mode 100644 libs/event-emitter/src/dashboards/dashboards.controller.ts diff --git a/libs/event-emitter/src/dashboards/dashboards.controller.ts b/libs/event-emitter/src/dashboards/dashboards.controller.ts new file mode 100644 index 0000000..84a3e1a --- /dev/null +++ b/libs/event-emitter/src/dashboards/dashboards.controller.ts @@ -0,0 +1,18 @@ +import { Controller, Get } from '@nestjs/common'; +import { DashboardsService } from './dashboards.service'; +import { BadRequestErrorHandler, getOrAppErrorOrThrow } from '../utils/result'; +import { UNLIMITED } from '../consts/consts'; + +@Controller('api/dashboards') +export class DashboardsController { + constructor(private dashboardsService: DashboardsService) {} + + @Get() + async list(): Promise { + const res = await getOrAppErrorOrThrow( + () => this.dashboardsService.publicList(UNLIMITED), + BadRequestErrorHandler, + ); + return res; + } +} diff --git a/libs/event-emitter/src/dashboards/dashboards.service.ts b/libs/event-emitter/src/dashboards/dashboards.service.ts index 997587a..dade61b 100644 --- a/libs/event-emitter/src/dashboards/dashboards.service.ts +++ b/libs/event-emitter/src/dashboards/dashboards.service.ts @@ -71,4 +71,19 @@ export class DashboardsService { await ds.insert(newValue); return; } + + async publicList(limit: number): Promise<{ id: string; title: string }[]> { + const ds = await this.db.getDatasource(); + const data = await ds.find({ + selector: { + 'data.title': { + $exists: true, + }, + }, + fields: ['id', 'data.title'], + limit: limit, + }); + if (!data.docs) throw createAppError('DASHBOARDS_NOT_FOUND'); + return data.docs.map((d) => ({ id: d.id, title: d.data.title })); + } } diff --git a/libs/event-emitter/src/event-emitter.module.ts b/libs/event-emitter/src/event-emitter.module.ts index 0a6d2f5..5aef956 100644 --- a/libs/event-emitter/src/event-emitter.module.ts +++ b/libs/event-emitter/src/event-emitter.module.ts @@ -35,6 +35,7 @@ import { ListIssuesByUsersWidgetDataLoaderService } from './dashboards/widget-da import { ListIssuesByUsersLikeJiraWidgetDataLoaderService } from './dashboards/widget-data-loader/list-issues-by-users-like-jira.widget-data-loader.service'; import { ListIssuesByFieldsWidgetDataLoaderService } from './dashboards/widget-data-loader/list-issues-by-fields.widget-data-loader.service'; import { WidgetsCollectionService } from './dashboards/widgets-collection.service'; +import { DashboardsController } from './dashboards/dashboards.controller'; @Module({}) export class EventEmitterModule implements OnModuleInit { @@ -148,6 +149,7 @@ export class EventEmitterModule implements OnModuleInit { IssuesController, CalendarController, DashboardController, + DashboardsController, ], }; }