载入中...
搜索中...
未找到
Schema.cpp
浏览该文件的文档.
151void getAttrStringArray(HSQUIRRELVM vm, SQInteger tableIdx, const char* key, std::vector<std::string>& out) {
181 if (getAttrNumber(vm, attrsIdx, "minimum", number) || getAttrNumber(vm, attrsIdx, "min", number))
183 if (getAttrNumber(vm, attrsIdx, "maximum", number) || getAttrNumber(vm, attrsIdx, "max", number))
392std::string Schema::getFieldEnumValue(const std::string& id, int fieldIndex, int valueIndex) const {
400 if (validationErrors_.empty()) return eve::Result<void>::success(eve::Status::success(eve::StatusCode::Applied));
403 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, error.message, error.path, {}, "schema"));
405eve::Result<void> Schema::validateJsonVersioned(const std::string& schemaId, int version, const std::string& json) {
407 if (validationErrors_.empty()) return eve::Result<void>::success(eve::Status::success(eve::StatusCode::Applied));
410 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, error.message, error.path, {}, "schema"));
412int Schema::getValidationErrorCount() const { return static_cast<int>(validationErrors_.size()); }
479 cls.addFunc("validateJson", [vm](Schema* value, const std::string& id, const std::string& json) {
The single Squirrel projection for common Result, Status and Value.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
static const SchemaDefinition * find(const std::string &id)
Finds the highest registered version for an id, or nullptr.
Definition SchemaRegistry.cpp:859
static std::vector< int > versions(const std::string &schemaId)
Returns all registered versions for an id in ascending order.
Definition SchemaRegistry.cpp:886
static eve::Result< SchemaRegistrationStatus > registerSchema(const SchemaDefinition &definition)
Registers or replaces the exact (id, version) entry.
Definition SchemaRegistry.cpp:845
static std::vector< ValidationError > validate(const std::string &schemaId, const std::string &json)
Validates JSON text against the highest registered schema version.
Definition SchemaRegistry.cpp:955
static const SchemaDefinition * resolve(const std::string &schemaId, int schemaVersion)
Resolves one exact (schemaId, schemaVersion) pair, or nullptr.
Definition SchemaRegistry.cpp:879
static std::vector< std::string > ids()
Returns registered schema ids, unique and in deterministic lexical order.
Definition SchemaRegistry.cpp:947
static eve::Result< SchemaRegistrationStatus > registerFromJson(const std::string &json)
Parses and registers or replaces one schema definition from JSON.
Definition SchemaRegistry.cpp:850
Script-facing facade for runtime schema registration and validation.
Definition Schema.h:16
std::string getFieldDefaultJson(const std::string &id, int index) const
Returns the optional default value as JSON text.
Definition Schema.cpp:368
int getFieldEnumCount(const std::string &id, int index) const
Returns the number of allowed string values.
Definition Schema.cpp:388
float getFieldMinimum(const std::string &id, int index) const
Returns a numeric minimum, or zero when absent.
Definition Schema.cpp:376
std::string getFieldElementType(const std::string &id, int index) const
Returns the element type name for an array field.
Definition Schema.cpp:348
std::string getSchemaId(int index) const
Returns the id at a deterministic enumeration index.
Definition Schema.cpp:304
std::string getValidationErrorPath(int index) const
Returns a failure's JSON Pointer-like path.
Definition Schema.cpp:413
std::string getFieldEnumValue(const std::string &id, int fieldIndex, int valueIndex) const
Returns one allowed string value.
Definition Schema.cpp:392
std::string getFieldReference(const std::string &id, int index) const
Returns the referenced definition/schema category.
Definition Schema.cpp:364
float getFieldMaximum(const std::string &id, int index) const
Returns a numeric maximum, or zero when absent.
Definition Schema.cpp:384
std::string getFieldName(const std::string &id, int index) const
Returns a field's stable name.
Definition Schema.cpp:340
std::string getFieldTitle(const std::string &id, int index) const
Returns the short editor-facing field title.
Definition Schema.cpp:356
bool getSchemaAdditionalProperties(const std::string &id) const
Returns whether undeclared object members are accepted.
Definition Schema.cpp:324
int getSchemaVersionCount(const std::string &id) const
Returns the number of registered versions for one schema id.
Definition Schema.cpp:296
eve::Result< void > registerJson(const std::string &json)
Registers or replaces a schema encoded as JSON.
Definition Schema.cpp:19
bool has(const std::string &id) const
Returns whether a stable schema id is registered.
Definition Schema.cpp:291
int getValidationErrorCount() const
Returns cached validation failure count.
Definition Schema.cpp:412
int getSchemaVersion(const std::string &id) const
Returns the highest registered schema version, or zero when absent.
Definition Schema.cpp:309
bool getFieldHasMinimum(const std::string &id, int index) const
Returns whether a numeric minimum constraint is present.
Definition Schema.cpp:372
std::string getFieldType(const std::string &id, int index) const
Returns a field's stable value type name.
Definition Schema.cpp:344
bool getFieldRequired(const std::string &id, int index) const
Returns whether a field must be present.
Definition Schema.cpp:352
std::string getSchemaDescription(const std::string &id) const
Returns a schema description, or an empty string when absent.
Definition Schema.cpp:319
std::string getFieldDescription(const std::string &id, int index) const
Returns the editor-facing field description.
Definition Schema.cpp:360
std::string getValidationErrorCode(int index) const
Returns a stable machine-readable failure code.
Definition Schema.cpp:418
bool hasVersion(const std::string &id, int version) const
Returns whether an exact schema id and version is registered.
Definition Schema.cpp:292
std::string getValidationErrorMessage(int index) const
Returns a human-readable failure description.
Definition Schema.cpp:423
eve::Result< void > validateJson(const std::string &schemaId, const std::string &json)
Validates JSON against the highest registered version and caches failures.
Definition Schema.cpp:398
std::string getSchemaTitle(const std::string &id) const
Returns a schema title, or an empty string when absent.
Definition Schema.cpp:314
eve::Result< void > validateJsonVersioned(const std::string &schemaId, int version, const std::string &json)
Validates JSON against one exact schema version.
Definition Schema.cpp:405
int getSchemaVersionAt(const std::string &id, int index) const
Returns a schema version at an ascending enumeration index.
Definition Schema.cpp:299
bool getFieldHasMaximum(const std::string &id, int index) const
Returns whether a numeric maximum constraint is present.
Definition Schema.cpp:380
int getFieldCount(const std::string &id) const
Returns the number of fields in a schema.
Definition Schema.cpp:335
eve::Result< void > registerFromClass(const ssq::Object &classOrInstance)
Registers a schema reflected from a script class or instance.
Definition Schema.cpp:196
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
Definition DefinitionForm.h:8
std::optional< ValueType > valueTypeFromString(const std::string &name)
Converts a stable schema type name to its enum value.
Definition SchemaRegistry.cpp:796
const char * valueTypeName(ValueType type)
Returns the stable lowercase name of a schema value type.
Definition SchemaRegistry.cpp:808
@ String
@ Boolean
@ Object
@ Integer
@ Number
ssq::Table projectResult(HSQUIRRELVM vm, Result< void > &&result)
Consume and project a void native Result using the common schema.
Definition SquirrelBinding.cpp:470
@ InvalidArgument
@ Applied
Metadata and validation constraints for one object member.
Definition SchemaTypes.h:77