package com.easyagents.federation.sql.source;

import java.util.List;

/**
 * 调用方管理的外部 Schema 快照引用。
 *
 * @param logicalName SQL 中的逻辑 Schema 名称
 * @param schemaRef 外部 Schema 引用
 * @param schemaRevision 外部 Schema 版本
 */
public record ExternalSchemaDefinition(
    String logicalName,
    String schemaRef,
    long schemaRevision
) implements FederationSchemaDefinition {

    /**
     * 校验外部 Schema 定义。
     */
    public ExternalSchemaDefinition {
        if (logicalName == null || logicalName.isBlank()) {
            throw new IllegalArgumentException("logicalName must not be blank");
        }
        if (schemaRef == null || schemaRef.isBlank()) {
            throw new IllegalArgumentException("schemaRef must not be blank");
        }
        if (schemaRevision < 0) {
            throw new IllegalArgumentException("schemaRevision must not be negative");
        }
    }

    /**
     * 返回外部 Schema 的稳定校验和材料。
     *
     * @return 稳定材料
     */
    @Override
    public List<String> checksumFields() {
        return List.of(schemaRef, Long.toString(schemaRevision));
    }
}
