// Copyright (c) 2025-2026 GeWuYou
// SPDX-License-Identifier: Apache-2.0
namespace GFramework.Game.Config;
///
/// 表示已解析并可用于运行时校验的 JSON Schema。
/// 该模型保留根节点与引用依赖集合,避免运行时引入完整 schema 引擎。
///
internal sealed class YamlConfigSchema
{
///
/// 初始化一个可用于运行时校验的 schema 模型。
///
/// Schema 文件路径。
/// 根节点模型。
/// Schema 声明的目标引用表名称集合。
/// 当 、 或 为 时抛出。
public YamlConfigSchema(
string schemaPath,
YamlConfigSchemaNode rootNode,
IReadOnlyCollection referencedTableNames)
{
ArgumentNullException.ThrowIfNull(schemaPath);
ArgumentNullException.ThrowIfNull(rootNode);
ArgumentNullException.ThrowIfNull(referencedTableNames);
SchemaPath = schemaPath;
RootNode = rootNode;
ReferencedTableNames = [.. referencedTableNames];
}
///
/// 获取 schema 文件路径。
///
public string SchemaPath { get; }
///
/// 获取根节点模型。
///
public YamlConfigSchemaNode RootNode { get; }
///
/// 获取 schema 声明的目标引用表名称集合。
/// 该信息用于热重载时推导受影响的依赖表闭包。
///
public IReadOnlyCollection ReferencedTableNames { get; }
}