跳转至

Schema 声明

导表结构可以用 GFConfigTableColumnGFConfigTableSchema 独立声明,再注册到 Provider 上做导入期或运行时校验。

它们只描述字段类型、必填、空值、默认值和额外字段策略。

var id_column := GFConfigTableColumn.new()
id_column.field_name = &"id"
id_column.value_type = GFConfigTableColumn.ValueType.INT
id_column.required = true
id_column.allow_null = false

var name_column := GFConfigTableColumn.new()
name_column.field_name = &"name"
name_column.value_type = GFConfigTableColumn.ValueType.STRING
name_column.required = true

var schema := GFConfigTableSchema.new()
schema.table_name = &"items"
schema.columns = [id_column, name_column]
schema.allow_extra_fields = false
schema.coerce_values = true
schema.fail_on_coerce_error = true
schema.require_unique_id = true

register_schema(schema)
var report := validate_table(&"items", get_table(&"items"))

字段校验、记录校验、表校验、JSON/CSV 导入报告见 导入校验与规则

Schema 副本语义

register_schema() 会保存 schema 副本。get_schema() 也返回副本,调用方修改返回值不会污染 Provider 内部校验规则。

这能避免编辑器工具、CI 校验或项目调试代码在读取 schema 后意外改动运行时 Provider 的正式规则。