| 1 | import { createZodDto } from '@yikart/common' |
| 2 | import { AssetType } from '@yikart/mongodb' |
| 3 | import { z } from 'zod' |
| 4 | |
| 5 | const createUploadSignSchema = z.object({ |
| 6 | filename: z.string().describe('文件名(带扩展名)'), |
| 7 | type: z.enum(AssetType).default(AssetType.Temp).describe('资源类型'), |
| 8 | size: z.number().optional().describe('文件大小(字节)'), |
| 9 | }) |
| 10 | export class CreateUploadSignDto extends createZodDto(createUploadSignSchema) {} |
| 11 | |
| 12 | const getThumbnailQuerySchema = z.object({ |
| 13 | url: z.string().describe('视频 URL(CDN URL 或 path)'), |
| 14 | timeInSeconds: z.coerce.number().min(0).default(1).describe('提取帧的时间点(秒),默认 1 秒'), |
| 15 | redirect: z.coerce.boolean().default(false).describe('是否直接重定向到封面 URL,默认 false'), |
| 16 | }) |
| 17 | export class GetThumbnailQueryDto extends createZodDto(getThumbnailQuerySchema) {} |
| 18 | |
| 19 | const ossCallbackDtoSchema = z.object({ |
| 20 | object: z.string().describe('OSS 对象路径'), |
| 21 | size: z.coerce.number().describe('文件大小'), |
| 22 | mimeType: z.string().describe('MIME 类型'), |
| 23 | assetId: z.string().describe('资产 ID'), |
| 24 | }) |
| 25 | export class OssCallbackDto extends createZodDto(ossCallbackDtoSchema, 'OssCallbackDto') {} |
| 26 |