package com.easyagents.federation.sql.api;

import java.util.List;

/**
 * 一个可插入 SQL 编辑器的补全候选。
 *
 * @param label 面向用户展示的短名称
 * @param insertText Calcite 生成的替换文本
 * @param kind 候选类型
 * @param qualifiedName 候选的完整限定名称
 */
public record SqlCompletionItem(
    String label,
    String insertText,
    SqlCompletionKind kind,
    List<String> qualifiedName
) {

    /**
     * 校验并防御性复制候选信息。
     */
    public SqlCompletionItem {
        if (label == null || label.isBlank() || insertText == null || kind == null) {
            throw new IllegalArgumentException(
                "completion label, insertText and kind must be provided"
            );
        }
        qualifiedName = List.copyOf(qualifiedName == null ? List.of() : qualifiedName);
    }
}
