载入中...
搜索中...
未找到
DefinitionRuntime.cpp
浏览该文件的文档.
2
4
5#include <utility>
6
8
11 bool replaceExisting) const {
12 if (!registry)
13 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.definition.registry-required"),
14 "Definition registry is required");
15 const auto result = replaceExisting
16 ? registry->replace(document.type(), document.id(), document.version(), document.json())
17 : registry->insert(document.type(), document.id(), document.version(), document.json());
18 if (!result.ok()) {
19 const auto* diagnostic = result.error();
20 return eve::editing::failed<void>(
21 EditorStatus::Rejected, RuleId("editor.definition.publish-rejected"),
22 diagnostic ? diagnostic->message() : "Definition registry rejected the document");
23 }
24 return eve::editing::applied<void>();
25}
26
27} // namespace eve::definitions_editing
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Deterministic registry of topic-neutral, versioned JSON definitions.
Definition Definitions.h:58
eve::Result< DefinitionHandle > insert(const std::string &type, const std::string &id, int version, const std::string &json)
Inserts a definition using the common generation-qualified registry.
eve::Result< DefinitionHandle > replace(const std::string &type, const std::string &id, int version, const std::string &json)
Replaces a live definition and invalidates its previous handle.
UI-neutral versioned definition asset and cross-reference model.
const std::string & json() const
Return JSON payload text.
int version() const
Return schema version.
const std::string & type() const
Return definition type/schema id.
const std::string & id() const
Return stable definition id.
Result< void > publish(const DefinitionDocument &document, definitions::DefinitionRegistry *registry, bool replaceExisting=false) const
Insert or replace one definition after editor-side validation.
StrongId< RuleIdTag > RuleId
Definition EditingIds.h:60