Просмотр исходного кода

♻️ refactor(submission): optimize DTO definitions using schema inheritance

- replace duplicate CreateSubmissionRecordsDto fields with SubmissionRecordsSchema.omit().partial()
- replace duplicate UpdateSubmissionRecordsDto fields with SubmissionRecordsSchema.omit().partial()
- remove redundant field definitions to improve maintainability and consistency
yourname 5 месяцев назад
Родитель
Сommit
11dacaefbb
1 измененных файлов с 11 добавлено и 35 удалено
  1. 11 35
      src/server/modules/submission/submission-records.entity.ts

+ 11 - 35
src/server/modules/submission/submission-records.entity.ts

@@ -79,38 +79,14 @@ export const SubmissionRecordsSchema = z.object({
   updatedAt: z.date().openapi({ description: '更新时间', example: '2025-05-21T21:22:06Z' })
 });
 
-export const CreateSubmissionRecordsDto = z.object({
-  classroomNo: z.string().max(255).nullable().openapi({ description: '教室号', example: 'class01' }),
-  userId: z.string().max(255).nullable().openapi({ description: '用户id', example: '1001' }),
-  nickname: z.string().max(255).nullable().openapi({ description: '昵称', example: 'student1' }),
-  score: z.number().nullable().openapi({ description: '成绩', example: 95.5 }),
-  code: z.string().max(255).nullable().openapi({ description: '代码', example: '001339' }),
-  trainingDate: z.date().nullable().openapi({ description: '训练日期', example: '2025-05-21T08:00:00Z' }),
-  mark: z.string().max(255).nullable().openapi({ description: '标记', example: '优秀' }),
-  status: z.number().nullable().openapi({ description: '状态', example: 1 }),
-  holdingStock: z.string().max(255).nullable().openapi({ description: '持股', example: '100股' }),
-  holdingCash: z.string().max(255).nullable().openapi({ description: '持币', example: '10000元' }),
-  price: z.number().nullable().openapi({ description: '价格', example: 15.68 }),
-  profitAmount: z.number().nullable().openapi({ description: '收益金额', example: 500.00 }),
-  profitPercent: z.number().nullable().openapi({ description: '收益率', example: 5.25 }),
-  totalProfitAmount: z.number().nullable().openapi({ description: '累计收益金额', example: 2500.00 }),
-  totalProfitPercent: z.number().nullable().openapi({ description: '累计收益率', example: 12.5 })
-});
-
-export const UpdateSubmissionRecordsDto = z.object({
-  classroomNo: z.string().max(255).nullable().openapi({ description: '教室号', example: 'class01' }),
-  userId: z.string().max(255).nullable().openapi({ description: '用户id', example: '1001' }),
-  nickname: z.string().max(255).nullable().openapi({ description: '昵称', example: 'student1' }),
-  score: z.number().nullable().openapi({ description: '成绩', example: 95.5 }),
-  code: z.string().max(255).nullable().openapi({ description: '代码', example: '001339' }),
-  trainingDate: z.date().nullable().openapi({ description: '训练日期', example: '2025-05-21T08:00:00Z' }),
-  mark: z.string().max(255).nullable().openapi({ description: '标记', example: '优秀' }),
-  status: z.number().nullable().openapi({ description: '状态', example: 1 }),
-  holdingStock: z.string().max(255).nullable().openapi({ description: '持股', example: '100股' }),
-  holdingCash: z.string().max(255).nullable().openapi({ description: '持币', example: '10000元' }),
-  price: z.number().nullable().openapi({ description: '价格', example: 15.68 }),
-  profitAmount: z.number().nullable().openapi({ description: '收益金额', example: 500.00 }),
-  profitPercent: z.number().nullable().openapi({ description: '收益率', example: 5.25 }),
-  totalProfitAmount: z.number().nullable().openapi({ description: '累计收益金额', example: 2500.00 }),
-  totalProfitPercent: z.number().nullable().openapi({ description: '累计收益率', example: 12.5 })
-});
+export const CreateSubmissionRecordsDto = SubmissionRecordsSchema.omit({
+  id: true,
+  createdAt: true,
+  updatedAt: true
+}).partial();
+
+export const UpdateSubmissionRecordsDto = SubmissionRecordsSchema.omit({
+  id: true,
+  createdAt: true,
+  updatedAt: true
+}).partial();