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

// 广告类型实体Schema
export const AdvertisementTypeSchema = z.object({
  id: z.number().int().positive().openapi({
    description: '广告类型ID',
    example: 1
  }),
  tenantId: 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: 'home_banner'
  }),
  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 CreateAdvertisementTypeDto = z.object({
  name: z.string().min(1).max(50).openapi({
    description: '类型名称',
    example: '首页轮播'
  }),
  code: z.string().min(1).max(20).openapi({
    description: '调用别名',
    example: 'home_banner'
  }),
  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 UpdateAdvertisementTypeDto = z.object({
  name: z.string().min(1).max(50).optional().openapi({
    description: '类型名称',
    example: '首页轮播'
  }),
  code: z.string().min(1).max(20).optional().openapi({
    description: '调用别名',
    example: 'home_banner'
  }),
  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
  })
});