package com.easyagents.store.milvus;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;

/**
 * Milvus VarChar 主键转换工具。
 */
final class MilvusPrimaryKeySupport {

    /**
     * 禁止实例化无状态工具类。
     */
    private MilvusPrimaryKeySupport() {
    }

    /**
     * 将删除主键归一化为 Milvus VarChar 主键值。
     *
     * <p>Milvus 向量存储创建的集合固定使用 VarChar 类型的 {@code id} 主键。
     * Java SDK 会根据传入值类型生成删除表达式，因此数值对象必须先转为字符串。</p>
     *
     * @param ids 调用方提供的主键集合
     * @return 可直接传给 Milvus Java SDK 的字符串主键列表
     * @throws NullPointerException 主键集合中包含空值时抛出
     */
    static List<Object> normalize(Collection<?> ids) {
        List<Object> normalizedIds = new ArrayList<Object>(ids.size());
        for (Object id : ids) {
            normalizedIds.add(Objects.requireNonNull(
                id,
                "Milvus primary key must not be null"
            ).toString());
        }
        return normalizedIds;
    }
}
