41 lines
1.8 KiB
TypeScript
41 lines
1.8 KiB
TypeScript
import { Body, Controller, Get, Param, Post } from '@nestjs/common';
|
|
import { ApiTags } from '@nestjs/swagger';
|
|
import { CurrentSessionUserId } from '../auth/current-session-user.decorator';
|
|
import { CurrentTenantId } from '../auth/current-tenant-id.decorator';
|
|
import { RequireRecentAuthentication } from '../auth/require-recent-authentication.decorator';
|
|
import { DeleteTargetDto, DeletionGovernanceService, DeletionTargetType } from './deletion-governance.service';
|
|
|
|
@ApiTags('deletion-governance')
|
|
@Controller('admin/deletions')
|
|
export class AdminDeletionGovernanceController {
|
|
constructor(private readonly deletions: DeletionGovernanceService) {}
|
|
|
|
@Get(':type/:id/preflight')
|
|
preflight(@Param('type') type: DeletionTargetType, @Param('id') id: string) {
|
|
return this.deletions.preflight(type, id);
|
|
}
|
|
|
|
@Post(':type/:id')
|
|
@RequireRecentAuthentication()
|
|
delete(@Param('type') type: DeletionTargetType, @Param('id') id: string, @Body() body: DeleteTargetDto, @CurrentSessionUserId() operatorId?: string) {
|
|
return this.deletions.delete(type, id, { ...body, operatorId });
|
|
}
|
|
}
|
|
|
|
@ApiTags('client-deletion-governance')
|
|
@Controller('client/deletions')
|
|
export class ClientDeletionGovernanceController {
|
|
constructor(private readonly deletions: DeletionGovernanceService) {}
|
|
|
|
@Get(':type/:id/preflight')
|
|
preflight(@Param('type') type: DeletionTargetType, @Param('id') id: string, @CurrentTenantId() tenantId: string) {
|
|
return this.deletions.preflight(type, id, tenantId);
|
|
}
|
|
|
|
@Post(':type/:id')
|
|
@RequireRecentAuthentication()
|
|
delete(@Param('type') type: DeletionTargetType, @Param('id') id: string, @Body() body: DeleteTargetDto, @CurrentTenantId() tenantId: string, @CurrentSessionUserId() operatorId?: string) {
|
|
return this.deletions.delete(type, id, { ...body, operatorId }, tenantId);
|
|
}
|
|
}
|