|
|
@@ -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
|
|
|
+ }
|
|
|
+ })
|
|
|
+});
|