package com.easyagents.federation.sql.adapter.jdbc;

import com.easyagents.federation.sql.source.FederationSchemaDefinition;
import java.util.Arrays;
import java.util.List;

/**
 * JDBC Catalog/Schema 到逻辑 Schema 的映射定义。
 *
 * @param logicalName SQL 中使用的逻辑 Schema 名称
 * @param catalog 物理 Catalog，可为空
 * @param physicalSchema 物理 Schema，可为空
 */
public record JdbcSchemaDefinition(
    String logicalName,
    String catalog,
    String physicalSchema
) implements FederationSchemaDefinition {

    /**
     * 校验逻辑名称并保留可空物理 Catalog/Schema。
     */
    public JdbcSchemaDefinition {
        if (logicalName == null || logicalName.isBlank()) {
            throw new IllegalArgumentException("logicalName must not be blank");
        }
    }

    /**
     * 返回 JDBC Schema 映射的稳定校验和材料。
     *
     * @return 稳定材料
     */
    @Override
    public List<String> checksumFields() {
        return Arrays.asList(catalog, physicalSchema);
    }
}
