33 lines
874 B
TypeScript
33 lines
874 B
TypeScript
|
|
// services/api/src/emergency/dto.ts —— 紧急停用通道请求 DTO(P2 Task 5)。
|
|||
|
|
// 契约权威:openapi.yaml [internal] emergencyDisable/emergencyEnable
|
|||
|
|
// (EmergencyDisableRequest/EmergencyEnableRequest)。「albumToken 与 albumId
|
|||
|
|
// 恰好其一」的跨字段约束在服务端校验(EmergencyService.findAlbum)。
|
|||
|
|
import {
|
|||
|
|
IsOptional,
|
|||
|
|
IsString,
|
|||
|
|
MaxLength,
|
|||
|
|
MinLength,
|
|||
|
|
} from 'class-validator';
|
|||
|
|
|
|||
|
|
/** 相册定位字段(两 DTO 共用;与契约 schema 同步)。 */
|
|||
|
|
abstract class EmergencyTargetDto {
|
|||
|
|
@IsOptional()
|
|||
|
|
@IsString()
|
|||
|
|
@MaxLength(32)
|
|||
|
|
albumToken?: string;
|
|||
|
|
|
|||
|
|
@IsOptional()
|
|||
|
|
@IsString()
|
|||
|
|
@MaxLength(64)
|
|||
|
|
albumId?: string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export class EmergencyDisableDto extends EmergencyTargetDto {
|
|||
|
|
@IsString()
|
|||
|
|
@MinLength(1)
|
|||
|
|
@MaxLength(500)
|
|||
|
|
reason!: string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export class EmergencyEnableDto extends EmergencyTargetDto {}
|