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

✨ feat(stock): 创建股票数据实体及相关数据模型

- 添加StockData实体类,包含id、code、data、createdAt和updatedAt字段
- 定义StockDataSchema用于数据验证和API文档生成
- 创建CreateStockDataDto和UpdateStockDataDto数据传输对象
- 设置MySQL表结构映射,包含适当的数据类型和约束
yourname 5 месяцев назад
Родитель
Сommit
36103e1896
1 измененных файлов с 68 добавлено и 0 удалено
  1. 68 0
      src/server/modules/stock/stock-data.entity.ts

+ 68 - 0
src/server/modules/stock/stock-data.entity.ts

@@ -0,0 +1,68 @@
+import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
+import { z } from '@hono/zod-openapi';
+
+@Entity('stock_data')
+export class StockData {
+  @PrimaryGeneratedColumn({ unsigned: true })
+  id!: number;
+
+  @Column({ name: 'code', type: 'varchar', length: 255, nullable: false, comment: '股票代码' })
+  code!: string;
+
+  @Column({ name: 'data', type: 'json', nullable: false, comment: '股票数据' })
+  data!: Record<string, any>;
+
+  @Column({ name: 'created_at', type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
+  createdAt!: Date;
+
+  @Column({ name: 'updated_at', type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', onUpdate: 'CURRENT_TIMESTAMP' })
+  updatedAt!: Date;
+}
+
+export const StockDataSchema = z.object({
+  id: z.number().int().positive().openapi({ description: 'ID', example: 1 }),
+  code: z.string().max(255).openapi({ description: '股票代码', example: '001339' }),
+  data: z.record(z.any()).openapi({ 
+    description: '股票数据', 
+    example: { 
+      date: '2025-05-21', 
+      open: 15.68, 
+      close: 16.25, 
+      high: 16.50, 
+      low: 15.50, 
+      volume: 1250000 
+    } 
+  }),
+  createdAt: z.date().openapi({ description: '创建时间', example: '2025-05-21T16:44:36Z' }),
+  updatedAt: z.date().openapi({ description: '更新时间', example: '2025-05-21T21:22:06Z' })
+});
+
+export const CreateStockDataDto = z.object({
+  code: z.string().max(255).openapi({ description: '股票代码', example: '001339' }),
+  data: z.record(z.any()).openapi({ 
+    description: '股票数据', 
+    example: { 
+      date: '2025-05-21', 
+      open: 15.68, 
+      close: 16.25, 
+      high: 16.50, 
+      low: 15.50, 
+      volume: 1250000 
+    } 
+  })
+});
+
+export const UpdateStockDataDto = z.object({
+  code: z.string().max(255).optional().openapi({ description: '股票代码', example: '001339' }),
+  data: z.record(z.any()).optional().openapi({ 
+    description: '股票数据', 
+    example: { 
+      date: '2025-05-21', 
+      open: 15.68, 
+      close: 16.25, 
+      high: 16.50, 
+      low: 15.50, 
+      volume: 1250000 
+    } 
+  })
+});