63 lines
2.1 KiB
TypeScript
63 lines
2.1 KiB
TypeScript
import { Body, Controller, Get, Param, Post, Put, Query } from '@nestjs/common';
|
|
import { ApiTags } from '@nestjs/swagger';
|
|
import { CurrentSessionUserId } from '../auth/current-session-user.decorator';
|
|
import { RequireRecentAuthentication } from '../auth/require-recent-authentication.decorator';
|
|
import { InfrastructureAlertSettingsService } from './infrastructure-alert-settings.service';
|
|
import { InfrastructureMonitoringService } from './infrastructure-monitoring.service';
|
|
|
|
@ApiTags('infrastructure-monitoring')
|
|
@Controller('admin/infrastructure-monitoring')
|
|
export class InfrastructureMonitoringController {
|
|
constructor(
|
|
private readonly monitoring: InfrastructureMonitoringService,
|
|
private readonly settings: InfrastructureAlertSettingsService,
|
|
) {}
|
|
|
|
@Get('overview')
|
|
overview(@Query('range') range?: string, @CurrentSessionUserId() userId?: string) {
|
|
return this.monitoring.overview(range, userId);
|
|
}
|
|
|
|
@Get('notification-summary')
|
|
notificationSummary(@CurrentSessionUserId() userId?: string) {
|
|
return this.monitoring.notificationSummary(userId);
|
|
}
|
|
|
|
@Get('alert-history')
|
|
alertHistory(@Query('from') from?: string, @Query('to') to?: string, @Query('page') page?: string) {
|
|
return this.monitoring.alertHistory(from, to, page);
|
|
}
|
|
|
|
@Post('alerts/:fingerprint/read')
|
|
markAlertRead(
|
|
@Param('fingerprint') fingerprint: string,
|
|
@Body('activeAt') activeAt: unknown,
|
|
@CurrentSessionUserId() userId: string,
|
|
) {
|
|
return this.monitoring.markAlertRead(fingerprint, activeAt, userId);
|
|
}
|
|
|
|
@Post('alerts/:fingerprint/clear')
|
|
clearAlert(
|
|
@Param('fingerprint') fingerprint: string,
|
|
@Body('activeAt') activeAt: unknown,
|
|
@CurrentSessionUserId() userId: string,
|
|
) {
|
|
return this.monitoring.clearAlert(fingerprint, activeAt, userId);
|
|
}
|
|
|
|
@Get('alert-thresholds')
|
|
alertThresholds() {
|
|
return this.settings.get();
|
|
}
|
|
|
|
@Put('alert-thresholds')
|
|
@RequireRecentAuthentication()
|
|
updateAlertThresholds(
|
|
@Body() body: { configVersion?: number; thresholds?: unknown },
|
|
@CurrentSessionUserId() operatorId?: string,
|
|
) {
|
|
return this.settings.update(body, operatorId);
|
|
}
|
|
}
|