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

export const SystemConfigSchema = z.object({
  id: z.number().int().positive().openapi({
    description: '系统配置ID',
    example: 1
  }),
  configKey: z.string().min(1).max(255).openapi({
    description: '配置键',
    example: 'app.login.enabled'
  }),
  configValue: z.string().openapi({
    description: '配置值',
    example: 'true'
  }),
  description: z.string().nullable().openapi({
    description: '配置描述',
    example: '控制小程序登录功能是否开启'
  }),
  createdBy: z.number().int().positive().nullable().openapi({
    description: '创建用户ID',
    example: 1
  }),
  updatedBy: z.number().int().positive().nullable().openapi({
    description: '更新用户ID',
    example: 1
  }),
  createdAt: z.coerce.date().openapi({
    description: '创建时间',
    example: '2023-01-15T10:30:00Z'
  }),
  updatedAt: z.coerce.date().openapi({
    description: '更新时间',
    example: '2023-01-16T14:20:00Z'
  })
});

export const CreateSystemConfigSchema = z.object({
  configKey: z.string().min(1).max(255).openapi({
    description: '配置键',
    example: 'app.login.enabled'
  }),
  configValue: z.string().openapi({
    description: '配置值',
    example: 'true'
  }),
  description: z.string().nullable().optional().openapi({
    description: '配置描述',
    example: '控制小程序登录功能是否开启'
  })
});

export const UpdateSystemConfigSchema = z.object({
  configKey: z.string().min(1).max(255).optional().openapi({
    description: '配置键',
    example: 'app.login.enabled'
  }),
  configValue: z.string().optional().openapi({
    description: '配置值',
    example: 'false'
  }),
  description: z.string().nullable().optional().openapi({
    description: '配置描述',
    example: '控制小程序登录功能是否开启'
  })
});

export const SystemConfigListSchema = z.array(SystemConfigSchema);