载入中...
搜索中...
未找到
Schema.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4#include "common/Module.h"
5#include "common/Result.h"
7
8#include <simplesquirrel/simplesquirrel.hpp>
9
10#include <string>
11#include <vector>
12
13namespace eve::schema {
14
17public:
19
22
26 [[nodiscard]] eve::Result<void> registerJson(const std::string& json);
37 [[nodiscard]] eve::Result<void> registerFromClass(const ssq::Object& classOrInstance);
39 void clear();
41 bool has(const std::string& id) const;
46 bool hasVersion(const std::string& id, int version) const;
48 int getSchemaCount() const;
52 int getSchemaVersionCount(const std::string& id) const;
58 int getSchemaVersionAt(const std::string& id, int index) const;
60 std::string getSchemaId(int index) const;
62 int getSchemaVersion(const std::string& id) const;
64 std::string getSchemaTitle(const std::string& id) const;
66 std::string getSchemaDescription(const std::string& id) const;
68 bool getSchemaAdditionalProperties(const std::string& id) const;
70 int getFieldCount(const std::string& id) const;
72 std::string getFieldName(const std::string& id, int index) const;
74 std::string getFieldType(const std::string& id, int index) const;
76 std::string getFieldElementType(const std::string& id, int index) const;
78 bool getFieldRequired(const std::string& id, int index) const;
80 std::string getFieldTitle(const std::string& id, int index) const;
82 std::string getFieldDescription(const std::string& id, int index) const;
84 std::string getFieldReference(const std::string& id, int index) const;
86 std::string getFieldDefaultJson(const std::string& id, int index) const;
88 bool getFieldHasMinimum(const std::string& id, int index) const;
90 float getFieldMinimum(const std::string& id, int index) const;
92 bool getFieldHasMaximum(const std::string& id, int index) const;
94 float getFieldMaximum(const std::string& id, int index) const;
96 int getFieldEnumCount(const std::string& id, int index) const;
98 std::string getFieldEnumValue(const std::string& id, int fieldIndex, int valueIndex) const;
99
103 [[nodiscard]] eve::Result<void> validateJson(const std::string& schemaId, const std::string& json);
110 [[nodiscard("schema validation outcome must be checked")]] eve::Result<void> validateJsonVersioned(
111 const std::string& schemaId, int version, const std::string& json);
113 int getValidationErrorCount() const;
115 std::string getValidationErrorPath(int index) const;
117 std::string getValidationErrorCode(int index) const;
119 std::string getValidationErrorMessage(int index) const;
120
121private:
130 const FieldDefinition* field(const std::string& id, int index) const;
131 std::vector<ValidationError> validationErrors_;
132};
133
134} // namespace eve::schema
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
Move-only, checked operation results for the common layer.
uint32_t index
EVENGINE_API_FOUNDATION public API.
Definition Module.h:46
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Script-facing facade for runtime schema registration and validation.
Definition Schema.h:16
Schema()
Creates an empty facade over the process schema registry.
Metadata and validation constraints for one object member.
Definition SchemaTypes.h:77