package com.lukouguoji.module_base.ui.weight.data.layout

/**
 * 自动查询配置类
 * 用于在 XML 中配置 PadDataLayoutNew 的自动查询功能
 *
 * 使用示例:
 * ```xml
 * <PadDataLayoutNew
 *     autoQueryEnabled="@{true}"
 *     autoQueryUrl="@{`/IntExpCheckIn/checked/queryWbNoList`}"
 *     autoQueryParamKey="@{`wbNo`}"
 *     autoQueryMinLength="@{4}"
 *     autoQueryMaxLength="@{8}"
 *     autoQueryTitle="@{`选择运单号`}"
 *     ... />
 * ```
 */
data class AutoQueryConfig(
    /** 是否启用自动查询 */
    var enabled: Boolean = false,

    /** 查询接口地址（必需） */
    var url: String = "",

    /** 查询参数的 key 名称（默认 "value"） */
    var paramKey: String = "value",

    /** 触发查询的最小长度（默认 4） */
    var minLength: Int = 4,

    /** 触发查询的最大长度（默认 8） */
    var maxLength: Int = 8,

    /** 弹框标题（默认 "请选择"） */
    var title: String = "请选择",

    /** 防抖延迟（毫秒，默认 300ms） */
    var debounceMillis: Long = 300L,

    /** 额外参数提供者（查询时动态获取额外参数，如航班日期、航班号等） */
    @Transient
    var extraParamsProvider: (() -> Map<String, String?>)? = null
) {
    /**
     * 验证配置是否有效
     * @return true 如果配置有效，false 否则
     */
    fun isValid(): Boolean {
        return enabled && url.isNotBlank() && minLength > 0 && maxLength >= minLength
    }
}
