import { z } from '@hono/zod-openapi';

// 银行名称实体Schema
export const BankNameSchema = z.object({
  id: z.number().int().positive().openapi({
    description: '银行名称ID',
    example: 1
  }),
  name: z.string().max(50).openapi({
    description: '银行名称',
    example: '中国工商银行'
  }),
  code: z.string().max(20).openapi({
    description: '银行代码',
    example: 'ICBC'
  }),
  remark: z.string().max(100).nullable().openapi({
    description: '备注',
    example: '大型国有商业银行'
  }),
  createdAt: z.coerce.date().openapi({
    description: '创建时间',
    example: '2024-01-01T00:00:00Z'
  }),
  updatedAt: z.coerce.date().openapi({
    description: '更新时间',
    example: '2024-01-01T00:00:00Z'
  }),
  createdBy: z.number().int().positive().nullable().openapi({
    description: '创建用户ID',
    example: 1
  }),
  updatedBy: z.number().int().positive().nullable().openapi({
    description: '更新用户ID',
    example: 1
  }),
  status: z.number().int().min(0).max(1).default(0).openapi({
    description: '状态 0禁用 1启用',
    example: 1
  })
});

// 创建银行名称DTO
export const CreateBankNameDto = z.object({
  name: z.string().min(1).max(50).openapi({
    description: '银行名称',
    example: '中国工商银行'
  }),
  code: z.string().min(1).max(20).openapi({
    description: '银行代码',
    example: 'ICBC'
  }),
  remark: z.string().max(100).nullable().optional().openapi({
    description: '备注',
    example: '大型国有商业银行'
  }),
  status: z.coerce.number<number>().int().min(0).max(1).default(0).optional().openapi({
    description: '状态 0禁用 1启用',
    example: 1
  })
});

// 更新银行名称DTO
export const UpdateBankNameDto = z.object({
  name: z.string().min(1).max(50).optional().openapi({
    description: '银行名称',
    example: '中国工商银行'
  }),
  code: z.string().min(1).max(20).optional().openapi({
    description: '银行代码',
    example: 'ICBC'
  }),
  remark: z.string().max(100).nullable().optional().openapi({
    description: '备注',
    example: '大型国有商业银行'
  }),
  status: z.coerce.number<number>().int().min(0).max(1).optional().openapi({
    description: '状态 0禁用 1启用',
    example: 1
  })
});