返回 AiToEarn
content.vo.ts
1 import { AccountType, createZodDto, FileUtil, UserType } from '@yikart/common'
2 import { z } from 'zod'
3
4 const fileUrlSchema = () => FileUtil.zodBuildUrl().nullable().optional()
5 const metadataSchema = z.object({
6 size: z.number().optional().describe('文件大小'),
7 mimeType: z.string().optional().describe('MIME 类型'),
8 }).optional().describe('文件元数据')
9
10 export const MediaVoSchema = z.object({
11 _id: z.unknown().optional().describe('Mongo ID'),
12 id: z.string().optional().describe('媒体 ID'),
13 userId: z.string().optional().describe('用户 ID'),
14 userType: z.enum(UserType).optional().describe('用户类型'),
15 groupId: z.string().optional().describe('媒体分组 ID'),
16 materialGroupId: z.string().optional().describe('素材分组 ID'),
17 type: z.string().optional().describe('媒体类型'),
18 url: fileUrlSchema().describe('媒体 URL'),
19 thumbUrl: fileUrlSchema().describe('缩略图 URL'),
20 title: z.string().optional().describe('标题'),
21 desc: z.string().optional().describe('描述'),
22 useCount: z.number().optional().describe('使用次数'),
23 metadata: metadataSchema,
24 createdAt: z.coerce.date().optional().describe('创建时间'),
25 updatedAt: z.coerce.date().optional().describe('更新时间'),
26 })
27 export class MediaVo extends createZodDto(MediaVoSchema, 'MediaVo') {}
28
29 export const MediaListVoSchema = z.object({
30 total: z.number().describe('总数'),
31 list: z.array(MediaVoSchema).describe('媒体列表'),
32 })
33 export class MediaListVo extends createZodDto(MediaListVoSchema, 'MediaListVo') {}
34
35 export const MaterialMediaVoSchema = z.object({
36 url: fileUrlSchema().describe('媒体 URL'),
37 thumbUrl: fileUrlSchema().describe('缩略图 URL'),
38 metadata: metadataSchema,
39 type: z.string().optional().describe('媒体类型'),
40 content: z.string().optional().describe('内容'),
41 mediaId: z.string().optional().describe('媒体 ID'),
42 })
43
44 export const MaterialVoSchema = z.object({
45 _id: z.unknown().optional().describe('Mongo ID'),
46 id: z.string().optional().describe('素材 ID'),
47 userId: z.string().optional().describe('用户 ID'),
48 userType: z.enum(UserType).optional().describe('用户类型'),
49 groupId: z.string().optional().describe('素材分组 ID'),
50 materialGroupId: z.string().optional().describe('素材分组 ID'),
51 taskId: z.string().optional().describe('任务 ID'),
52 source: z.string().optional().describe('素材来源'),
53 type: z.string().optional().describe('素材类型'),
54 coverUrl: fileUrlSchema().describe('封面 URL'),
55 mediaList: z.array(MaterialMediaVoSchema).optional().describe('媒体列表'),
56 title: z.string().optional().describe('标题'),
57 desc: z.string().optional().describe('描述'),
58 topics: z.array(z.string()).optional().describe('话题'),
59 option: z.any().optional().describe('发布选项'),
60 status: z.number().optional().describe('素材状态'),
61 message: z.string().optional().describe('状态消息'),
62 useCount: z.number().optional().describe('使用次数'),
63 maxUseCount: z.number().nullable().optional().describe('最大使用次数'),
64 autoDeleteMedia: z.boolean().optional().describe('是否自动删除媒体'),
65 model: z.string().optional().describe('模型'),
66 generationParams: z.record(z.string(), z.unknown()).optional().describe('AI 生成参数'),
67 accountTypes: z.array(z.enum(AccountType)).optional().describe('适用账号类型'),
68 createdAt: z.coerce.date().optional().describe('创建时间'),
69 updatedAt: z.coerce.date().optional().describe('更新时间'),
70 })
71 export class MaterialVo extends createZodDto(MaterialVoSchema, 'MaterialVo') {}
72
73 export const MaterialListVoSchema = z.object({
74 total: z.number().describe('总数'),
75 list: z.array(MaterialVoSchema).describe('素材列表'),
76 })
77 export class MaterialListVo extends createZodDto(MaterialListVoSchema, 'MaterialListVo') {}
78
79 export const MediaGroupWithMediaListVoSchema = z.object({
80 _id: z.unknown().optional().describe('Mongo ID'),
81 id: z.string().optional().describe('媒体分组 ID'),
82 userId: z.string().optional().describe('用户 ID'),
83 userType: z.enum(UserType).optional().describe('用户类型'),
84 type: z.string().optional().describe('媒体类型'),
85 title: z.string().optional().describe('标题'),
86 desc: z.string().optional().describe('描述'),
87 isDefault: z.boolean().optional().describe('是否默认分组'),
88 mediaList: MediaListVoSchema.optional().describe('媒体列表'),
89 createdAt: z.coerce.date().optional().describe('创建时间'),
90 updatedAt: z.coerce.date().optional().describe('更新时间'),
91 })
92 export class MediaGroupWithMediaListVo extends createZodDto(
93 MediaGroupWithMediaListVoSchema,
94 'MediaGroupWithMediaListVo',
95 ) {}
96
97 export const MediaGroupListVoSchema = z.object({
98 total: z.number().describe('总数'),
99 list: z.array(MediaGroupWithMediaListVoSchema).describe('媒体分组列表'),
100 })
101 export class MediaGroupListVo extends createZodDto(MediaGroupListVoSchema, 'MediaGroupListVo') {}
102
102 lines TYPESCRIPT