跳转至

GFConfigTableSchema

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/utilities/config/gf_config_table_schema.gd
  • 模块:Standard
  • 继承:Resource
  • API:public
  • 类别:资源定义 (resource_definition)
  • 首次版本:3.17.0

通用导表结构声明与校验器。 用于在导入期或运行时校验表数据结构,保持数据工具链可替换且不绑定业务表。

成员概览

类型 名称 签名
属性 table_name var table_name: StringName = &""
属性 id_field var id_field: StringName = &"id"
属性 columns var columns: Array[GFConfigTableColumn] = []
属性 allow_extra_fields var allow_extra_fields: bool = true
属性 coerce_values var coerce_values: bool = false
属性 fail_on_coerce_error var fail_on_coerce_error: bool = true
属性 require_unique_id var require_unique_id: bool = false
属性 indexes var indexes: Array[GFConfigTableIndexDefinition] = []
属性 references var references: Array[GFConfigTableReference] = []
属性 record_validation_rules var record_validation_rules: Array[GFConfigValidationRule] = []
属性 table_validation_rules var table_validation_rules: Array[GFConfigValidationRule] = []
属性 metadata var metadata: Dictionary = {}
方法 infer_from_records static func infer_from_records( inferred_table_name: StringName, table_data: Variant, options: Dictionary = {} ) -> GFConfigTableSchema:
方法 get_table_key func get_table_key() -> StringName:
方法 get_column func get_column(field_name: StringName) -> GFConfigTableColumn:
方法 has_column func has_column(field_name: StringName) -> bool:
方法 get_index func get_index(index_id: StringName) -> GFConfigTableIndexDefinition:
方法 has_index func has_index(index_id: StringName) -> bool:
方法 get_reference func get_reference(reference_id: StringName) -> GFConfigTableReference:
方法 has_reference func has_reference(reference_id: StringName) -> bool:
方法 get_column_names func get_column_names() -> PackedStringArray:
方法 validate_definition func validate_definition(options: Dictionary = {}) -> Dictionary:
方法 validate_record func validate_record(record: Dictionary, row_key: Variant = null, options: Dictionary = {}) -> Dictionary:
方法 validate_table func validate_table(table_data: Variant, options: Dictionary = {}) -> Dictionary:
方法 coerce_record func coerce_record(record: Dictionary) -> Dictionary:
方法 build_empty_record func build_empty_record(include_optional: bool = true) -> Dictionary:
方法 duplicate_schema func duplicate_schema() -> GFConfigTableSchema:
方法 describe func describe() -> Dictionary:

属性

table_name

  • API:public
var table_name: StringName = &""

表名。为空时可由调用方自行决定表标识。

id_field

  • API:public
var id_field: StringName = &"id"

记录 ID 字段。为空时不检查记录 ID。

columns

  • API:public
var columns: Array[GFConfigTableColumn] = []

字段声明列表。

结构:

  • columns: Array[GFConfigTableColumn],定义当前表允许的字段和字段级校验规则。

allow_extra_fields

  • API:public
var allow_extra_fields: bool = true

是否允许记录包含 schema 未声明的字段。

coerce_values

  • API:public
var coerce_values: bool = false

是否在校验前按字段声明尝试类型转换。

fail_on_coerce_error

  • API:public
var fail_on_coerce_error: bool = true

启用 coerce_values 时,转换失败是否作为校验错误。

require_unique_id

  • API:public
var require_unique_id: bool = false

校验整表时是否要求 id_field 唯一。

indexes

  • API:public
var indexes: Array[GFConfigTableIndexDefinition] = []

可选复合索引声明。唯一索引会参与表级校验。

结构:

  • indexes: Array[GFConfigTableIndexDefinition],定义当前表的复合索引和唯一性约束。

references

  • API:public
var references: Array[GFConfigTableReference] = []

可选跨表引用声明。引用目标由 GFConfigReferenceResolver 在多表上下文中校验。

结构:

  • references: Array[GFConfigTableReference],定义当前表到其他表的引用关系。

record_validation_rules

  • API:public
var record_validation_rules: Array[GFConfigValidationRule] = []

可选记录级校验规则。规则会在字段结构校验后作用于整条记录。

结构:

  • record_validation_rules: Array[GFConfigValidationRule],包含作用于单条记录的校验规则。

table_validation_rules

  • API:public
var table_validation_rules: Array[GFConfigValidationRule] = []

可选表级校验规则。规则会在行结构、唯一 ID 和索引校验后作用于整表。

结构:

  • table_validation_rules: Array[GFConfigValidationRule],包含作用于整张表的校验规则。

metadata

  • API:public
var metadata: Dictionary = {}

可选元数据,供导入器、编辑器或项目层扩展使用。

结构:

  • metadata: Dictionary,保存导入器、编辑器或项目层附加到当前 schema 的元数据。

方法

infer_from_records

  • API:public
static func infer_from_records( inferred_table_name: StringName, table_data: Variant, options: Dictionary = {} ) -> GFConfigTableSchema:

从记录样本推导通用 schema。

参数:

名称 说明
inferred_table_name 推导出的表名。
table_data Array[Dictionary] 或 Dictionary 形式的表数据。
options 可选参数,支持 id_field、required_if_present_in_all_rows、allow_extra_fields、coerce_values。

返回:推导出的 schema;数据无效时返回空 schema。

结构:

  • table_data: Variant,支持 Array[Dictionary] 或 Dictionary,记录值必须为 Dictionary。
  • options: Dictionary,可包含 id_field、required_if_present_in_all_rows、allow_extra_fields 和 coerce_values。

get_table_key

  • API:public
func get_table_key() -> StringName:

获取稳定表键。

返回:表名。

get_column

  • API:public
func get_column(field_name: StringName) -> GFConfigTableColumn:

获取字段声明。

参数:

名称 说明
field_name 字段名。

返回:找到时返回字段声明,否则返回 null。

has_column

  • API:public
func has_column(field_name: StringName) -> bool:

检查字段声明是否存在。

参数:

名称 说明
field_name 字段名。

返回:存在返回 true。

get_index

  • API:public
func get_index(index_id: StringName) -> GFConfigTableIndexDefinition:

获取索引声明。

参数:

名称 说明
index_id 索引标识。

返回:找到时返回索引声明,否则返回 null。

has_index

  • API:public
func has_index(index_id: StringName) -> bool:

检查索引声明是否存在。

参数:

名称 说明
index_id 索引标识。

返回:存在返回 true。

get_reference

  • API:public
func get_reference(reference_id: StringName) -> GFConfigTableReference:

获取引用声明。

参数:

名称 说明
reference_id 引用标识。

返回:找到时返回引用声明,否则返回 null。

has_reference

  • API:public
func has_reference(reference_id: StringName) -> bool:

检查引用声明是否存在。

参数:

名称 说明
reference_id 引用标识。

返回:存在返回 true。

get_column_names

  • API:public
func get_column_names() -> PackedStringArray:

获取当前 schema 的字段名列表。

返回:字段名列表。

validate_definition

  • API:public
func validate_definition(options: Dictionary = {}) -> Dictionary:

校验 schema 自身声明是否完整、一致。

参数:

名称 说明
options 可选上下文,支持 source。

返回:校验报告字典。

结构:

  • options: Dictionary,可包含 source、line、column、row_index、column_index 和 row_locations。
  • return: GFConfigValidationReport 兼容 Dictionary。

validate_record

  • API:public
func validate_record(record: Dictionary, row_key: Variant = null, options: Dictionary = {}) -> Dictionary:

校验单条记录。

参数:

名称 说明
record 记录字典。
row_key 可选行标识,用于错误报告。
options 可选上下文,支持 source、line、row_index、row_locations。

返回:校验报告字典。

结构:

  • record: Dictionary,待校验的配置记录,键为字段名,值为字段数据。
  • row_key: Variant,写入校验报告 issue 的行标识。
  • options: Dictionary,可包含 source、line、column、row_index、column_index 和 row_locations。
  • return: GFConfigValidationReport 兼容 Dictionary。

validate_table

  • API:public
func validate_table(table_data: Variant, options: Dictionary = {}) -> Dictionary:

校验整张表。

参数:

名称 说明
table_data Array[Dictionary] 或 Dictionary 形式的表数据。
options 可选上下文,支持 source、row_locations。

返回:校验报告字典。

结构:

  • table_data: Variant,支持 Array[Dictionary] 或 Dictionary,记录值必须为 Dictionary。
  • options: Dictionary,可包含 source、line、column、row_index、column_index 和 row_locations。
  • return: GFConfigValidationReport 兼容 Dictionary。

coerce_record

  • API:public
func coerce_record(record: Dictionary) -> Dictionary:

按字段声明转换单条记录。

参数:

名称 说明
record 输入记录。

返回:转换后的新记录。

结构:

  • record: Dictionary,待转换的配置记录,键为字段名,值为字段数据。
  • return: Dictionary,转换后的记录副本。

build_empty_record

  • API:public
func build_empty_record(include_optional: bool = true) -> Dictionary:

创建空记录模板。

参数:

名称 说明
include_optional 为 true 时包含非必填字段。

返回:新记录字典。

结构:

  • return: Dictionary,键为字段名,值为字段默认值转换后的结果。

duplicate_schema

  • API:public
func duplicate_schema() -> GFConfigTableSchema:

创建同内容拷贝,避免运行时修改污染共享 Resource。

返回:新 schema。

describe

  • API:public
func describe() -> Dictionary:

导出 schema 摘要。

返回:schema 字典。

结构:

  • return: Dictionary,包含 table_name、id_field、columns、allow_extra_fields、coerce_values、fail_on_coerce_error、require_unique_id、indexes、references、record_validation_rules、table_validation_rules 和 metadata。