import { Controller, Param, Post, UseFilters, UseGuards } from '@nestjs/common'; import { getWorkspaceAuthContext } from 'src/engine/core-modules/auth/storage/workspace-auth-context.storage'; import { JwtAuthGuard } from 'src/engine/guards/jwt-auth.guard'; import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; import { DuplicatedDashboardDTO } from 'src/modules/dashboard/dtos/duplicated-dashboard.dto'; import { DashboardRestApiExceptionFilter } from 'src/modules/dashboard/filters/dashboard-rest-api-exception.filter'; import { DashboardDuplicationService } from 'src/modules/dashboard/services/dashboard-duplication.service'; @Controller('rest/dashboards') @UseGuards(JwtAuthGuard, WorkspaceAuthGuard, NoPermissionGuard) @UseFilters(DashboardRestApiExceptionFilter) export class DashboardController { constructor( private readonly dashboardDuplicationService: DashboardDuplicationService, ) {} @Post(':id/duplicate') async duplicate(@Param('id') id: string): Promise { const authContext = getWorkspaceAuthContext(); return this.dashboardDuplicationService.duplicateDashboard(id, authContext); } }