import type {
  SystemSettingCategory,
  SystemSettingValueType,
} from "@/modules/settings/data-access-system-settings"

/**
 * 系统设置项（用于 upsertSystemSettings 批量写入）
 */
export interface SettingItem {
  category: SystemSettingCategory
  key: string
  value: string
  valueType: SystemSettingValueType
}

/**
 * 将表单值转换为可写入数据库的设置项。
 *
 * 根据 valueType 将原始值序列化为字符串：
 * - json: JSON.stringify
 * - boolean: "true" / "false"
 * - number: String(value)
 * - string: String(value ?? "")（null/undefined 转为空串）
 *
 * 该函数为纯函数，便于单元测试。
 */
export function toSettingItem(
  category: SystemSettingCategory,
  key: string,
  value: unknown,
  valueType: SystemSettingValueType,
): SettingItem {
  let strValue: string
  if (valueType === "json") {
    strValue = JSON.stringify(value)
  } else if (valueType === "boolean") {
    strValue = value ? "true" : "false"
  } else if (valueType === "number") {
    strValue = String(value)
  } else {
    strValue = String(value ?? "")
  }
  return { category, key, value: strValue, valueType }
}
