This commit is contained in:
2026-08-09 22:47:14 +08:00
parent a058242536
commit 5054ceb2c8
19 changed files with 364 additions and 339 deletions
+6 -2
View File
@@ -10,10 +10,14 @@
#include <set>
#include <stdexcept>
#include <string>
#include <string_view>
#include <type_traits>
#include <utility>
#include <variant>
namespace adminive {
inline constexpr std::string_view resource_protocol = "adminive.resource";
inline constexpr int resource_protocol_version = 5;
struct Update_Result {
bool success{};
std::string message;
@@ -437,8 +441,8 @@ Json model_descriptor_json(const Model* defaults = nullptr) {
}(), ...);
}, descriptor.fields());
Json result = json_object<Json>();
json_set(result, "protocol", "adminive.resource");
json_set(result, "protocol_version", 5);
json_set(result, "protocol", resource_protocol);
json_set(result, "protocol_version", resource_protocol_version);
json_set(result, "name", descriptor.name());
json_set(result, "label", descriptor.label());
json_set(result, "value_type", "object");
+6 -2
View File
@@ -1,9 +1,13 @@
#pragma once
#include "adminive/json.hpp"
#include <string>
#include <string_view>
#include <type_traits>
#include <utility>
namespace adminive {
inline constexpr std::string_view status_protocol = "adminive.status";
inline constexpr int status_protocol_version = 1;
template <class T>
struct Status_Value {
using value_type = T;
@@ -62,8 +66,8 @@ Json to_status_descriptor_json() {
}(), ...);
}, descriptor.fields());
Json result = json_object<Json>();
json_set(result, "protocol", "adminive.status");
json_set(result, "protocol_version", 1);
json_set(result, "protocol", status_protocol);
json_set(result, "protocol_version", status_protocol_version);
json_set(result, "name", descriptor.name());
json_set(result, "label", descriptor.label());
json_set(result, "value_type", "status_object");
+16 -10
View File
@@ -3,7 +3,13 @@
#include "adminive/json.hpp"
#include "adminive/view.hpp"
#include <map>
#include <string_view>
namespace adminive {
inline constexpr std::string_view view_protocol = "adminive.view";
inline constexpr int view_protocol_version = 1;
inline constexpr std::string_view composition_manifest_protocol = "adminive.composition-manifest";
inline constexpr int composition_manifest_protocol_version = 1;
inline std::string_view composition_node_kind_name(Composition_Node_Kind value) noexcept {
switch(value) {
case Composition_Node_Kind::slot:
@@ -72,8 +78,8 @@ template <Json_Type Json>
Json to_view_json(const Composition_View& view) {
validate_composition_view(view);
Json result = json_object<Json>();
json_set(result, "protocol", "adminive.view");
json_set(result, "protocol_version", 1);
json_set(result, "protocol", view_protocol);
json_set(result, "protocol_version", view_protocol_version);
json_set(result, "kind", "composition");
json_set(result, "name", view.name);
if(!view.title.empty()) {
@@ -109,8 +115,8 @@ Json to_composition_manifest_json(const Composition_View& view, const std::vecto
json_set(slots, contract.name, std::move(item));
}
Json result = json_object<Json>();
json_set(result, "protocol", "adminive.composition-manifest");
json_set(result, "protocol_version", 1);
json_set(result, "protocol", composition_manifest_protocol);
json_set(result, "protocol_version", composition_manifest_protocol_version);
json_set(result, "view", to_view_json<Json>(view));
json_set(result, "slots", std::move(slots));
return result;
@@ -202,8 +208,8 @@ template <Json_Type Json, Described_Type T>
Json to_view_json(const Form_View& view) {
validate_form_view<T>(view);
Json result = json_object<Json>();
json_set(result, "protocol", "adminive.view");
json_set(result, "protocol_version", 1);
json_set(result, "protocol", view_protocol);
json_set(result, "protocol_version", view_protocol_version);
json_set(result, "kind", "form");
json_set(result, "name", view.name);
json_set(result, "title", view.title);
@@ -261,8 +267,8 @@ template <Json_Type Json, Described_Type T>
Json to_view_json(const Table_View& view) {
validate_table_view<T>(view);
Json result = json_object<Json>();
json_set(result, "protocol", "adminive.view");
json_set(result, "protocol_version", 1);
json_set(result, "protocol", view_protocol);
json_set(result, "protocol_version", view_protocol_version);
json_set(result, "kind", "table");
append_table_view_json(result, view);
return result;
@@ -271,8 +277,8 @@ template <Json_Type Json, Described_Type T>
Json to_view_json(const Collection_View& view) {
validate_collection_view<T>(view);
Json result = json_object<Json>();
json_set(result, "protocol", "adminive.view");
json_set(result, "protocol_version", 1);
json_set(result, "protocol", view_protocol);
json_set(result, "protocol_version", view_protocol_version);
json_set(result, "kind", "collection");
json_set(result, "mode", std::string(collection_mode_name(view.mode)));
append_table_view_json(result, view.table);