| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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
- }
- })
- });
|