返回 AiToEarn
media.dto.ts
1 /*
2 * @Author: nevin
3 * @Date: 2024-08-19 15:58:47
4 * @LastEditTime: 2025-03-17 12:41:12
5 * @LastEditors: nevin
6 * @Description: Media media
7 */
8 import { createZodDto, FileUtil, TableDtoSchema } from '@yikart/common'
9 import { MediaType } from '@yikart/mongodb'
10 import { z } from 'zod'
11
12 export const MediaIdSchema = z.object({
13 id: z.string().describe('ID'),
14 })
15 export class MediaIdDto extends createZodDto(MediaIdSchema) {}
16
17 export const CreateMediaSchema = z.object({
18 groupId: z.string().describe('组ID'),
19 materialId: z.string().optional().describe('素材ID'),
20 type: z.enum(MediaType).describe('类型'),
21 url: FileUtil.zodTrimHost().describe('文件链接'),
22 thumbUrl: FileUtil.zodTrimHost().optional().describe('缩略图'),
23 title: z.string().optional().describe('标题'),
24 desc: z.string().optional().describe('描述'),
25 })
26 export class CreateMediaDto extends createZodDto(CreateMediaSchema) {}
27
28 export const MediaFilterSchema = z.object({
29 groupId: z.string().optional().describe('组ID'),
30 materialGroupId: z.string().optional().describe('草稿箱组ID'),
31 type: z.enum(MediaType).optional().describe('类型'),
32 useCount: z.coerce.number().optional().describe('use conut (min)'),
33 })
34 export class MediaFilterDto extends createZodDto(MediaFilterSchema, 'MediaFilterDto') {}
35
36 export const MediaListSchema = z.object({
37 page: TableDtoSchema,
38 filter: MediaFilterSchema,
39 })
40 export class MediaListDto extends createZodDto(MediaListSchema) {}
41
42 const addUseCountOfListSchema = z.object({
43 ids: z.array(z.string()).min(1).describe('ID列表'),
44 })
45 export class AddUseCountOfListDto extends createZodDto(addUseCountOfListSchema) {}
46
47 const MediaIdsSchema = z.object({
48 ids: z.array(z.string()).min(1).describe('ID列表'),
49 })
50 export class MediaIdsDto extends createZodDto(MediaIdsSchema) {}
51
52 const TransferMediaSchema = z.object({
53 ids: z.array(z.string()).min(1).describe('媒体资源ID列表'),
54 targetGroupId: z.string().describe('目标媒体分组ID'),
55 mode: z.enum(['move', 'copy']).describe('转移模式:move 移动,copy 复制'),
56 })
57 export class TransferMediaDto extends createZodDto(TransferMediaSchema, 'TransferMediaDto') {}
58
58 lines TYPESCRIPT