Decentralised Art Server
High-performance C++ backend that exposes HTML interface and a secure REST API for managing Performative Transactions entities
 
Loading...
Searching...
No Matches
registry_store.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <memory>
5#include <optional>
6#include <string>
7#include <vector>
8
9#include "address.hpp"
10#include "pt.hpp"
11#include "format_hash.hpp"
12#include "parser.hpp"
13
14namespace dcn::storage
15{
17 using ConnectorRecordHandle = std::shared_ptr<const ConnectorRecord>;
18 using TransformationRecordHandle = std::shared_ptr<const TransformationRecord>;
19 using ConditionRecordHandle = std::shared_ptr<const ConditionRecord>;
20
22 {
24 ConnectorRecord record;
25 evmc::bytes32 format_hash{};
26 std::vector<ScalarLabel> canonical_scalar_labels;
27 };
28
30 {
32 TransformationRecord record;
33 };
34
36 {
38 ConditionRecord record;
39 };
40
41 using NameCursor = std::string;
42
44 {
45 std::vector<std::string> entries;
46 std::optional<std::string> next_after;
47 bool has_more = false;
48 };
49
50 enum class WalCheckpointMode : std::uint8_t
51 {
52 PASSIVE,
53 FULL,
55 };
56
58 {
59 public:
60 virtual ~IRegistryStore() = default;
61
62 virtual bool hasConnector(const std::string & name) const = 0;
63 virtual std::optional<ConnectorRecordHandle> getConnectorRecordHandle(const std::string & name) const = 0;
64 virtual std::optional<evmc::bytes32> getConnectorFormatHash(const std::string & name) const = 0;
65 virtual bool addConnector(
66 const chain::Address & address,
67 const ConnectorRecord & record,
68 const evmc::bytes32 & format_hash,
69 const std::vector<ScalarLabel> & canonical_scalar_labels) = 0;
70 virtual bool addConnectorsBatch(
71 const std::vector<ConnectorBatchItem> & items,
72 bool all_or_nothing = true) = 0;
73 virtual std::size_t getFormatConnectorNamesCount(const evmc::bytes32 & format_hash) const = 0;
75 const evmc::bytes32 & format_hash,
76 const std::optional<NameCursor> & after,
77 std::size_t limit) const = 0;
78 virtual std::optional<std::vector<ScalarLabel>> getScalarLabelsByFormatHash(
79 const evmc::bytes32 & format_hash) const = 0;
80
81 virtual bool hasTransformation(const std::string & name) const = 0;
82 virtual std::optional<TransformationRecordHandle> getTransformationRecordHandle(
83 const std::string & name) const = 0;
84 virtual bool addTransformation(
85 const chain::Address & address,
86 const TransformationRecord & record) = 0;
88 const std::vector<TransformationBatchItem> & items,
89 bool all_or_nothing = true) = 0;
90
91 virtual bool hasCondition(const std::string & name) const = 0;
92 virtual std::optional<ConditionRecordHandle> getConditionRecordHandle(
93 const std::string & name) const = 0;
94 virtual bool addCondition(
95 const chain::Address & address,
96 const ConditionRecord & record) = 0;
97 virtual bool addConditionsBatch(
98 const std::vector<ConditionBatchItem> & items,
99 bool all_or_nothing = true) = 0;
100
102 const chain::Address & owner,
103 const std::optional<NameCursor> & after,
104 std::size_t limit) const = 0;
106 const chain::Address & owner,
107 const std::optional<NameCursor> & after,
108 std::size_t limit) const = 0;
110 const chain::Address & owner,
111 const std::optional<NameCursor> & after,
112 std::size_t limit) const = 0;
113
114 virtual bool checkpointWal(WalCheckpointMode mode) const = 0;
115 };
116}
117
118namespace dcn::parse
119{
120 Result<storage::NameCursor> parseNameCursor(const std::string & name_token);
121}
Definition registry_store.hpp:58
virtual std::optional< ConditionRecordHandle > getConditionRecordHandle(const std::string &name) const =0
virtual std::size_t getFormatConnectorNamesCount(const evmc::bytes32 &format_hash) const =0
virtual std::optional< ConnectorRecordHandle > getConnectorRecordHandle(const std::string &name) const =0
virtual bool addTransformation(const chain::Address &address, const TransformationRecord &record)=0
virtual std::optional< TransformationRecordHandle > getTransformationRecordHandle(const std::string &name) const =0
virtual bool hasCondition(const std::string &name) const =0
virtual std::optional< std::vector< ScalarLabel > > getScalarLabelsByFormatHash(const evmc::bytes32 &format_hash) const =0
virtual std::optional< evmc::bytes32 > getConnectorFormatHash(const std::string &name) const =0
virtual NameCursorPage getFormatConnectorNamesCursor(const evmc::bytes32 &format_hash, const std::optional< NameCursor > &after, std::size_t limit) const =0
virtual bool addConnector(const chain::Address &address, const ConnectorRecord &record, const evmc::bytes32 &format_hash, const std::vector< ScalarLabel > &canonical_scalar_labels)=0
virtual bool checkpointWal(WalCheckpointMode mode) const =0
virtual bool hasTransformation(const std::string &name) const =0
virtual bool addCondition(const chain::Address &address, const ConditionRecord &record)=0
virtual NameCursorPage getOwnedTransformationsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const =0
virtual NameCursorPage getOwnedConditionsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const =0
virtual bool addConnectorsBatch(const std::vector< ConnectorBatchItem > &items, bool all_or_nothing=true)=0
virtual bool addTransformationsBatch(const std::vector< TransformationBatchItem > &items, bool all_or_nothing=true)=0
virtual NameCursorPage getOwnedConnectorsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const =0
virtual ~IRegistryStore()=default
virtual bool addConditionsBatch(const std::vector< ConditionBatchItem > &items, bool all_or_nothing=true)=0
virtual bool hasConnector(const std::string &name) const =0
std::string name
Definition ingestion.cpp:29
evmc::address Address
Definition address.hpp:18
Definition http.hpp:190
Result< storage::NameCursor > parseNameCursor(const std::string &name_token)
Definition sqlite_registry_store.cpp:1620
Definition registry.hpp:21
WalCheckpointMode
Definition registry_store.hpp:51
std::shared_ptr< const TransformationRecord > TransformationRecordHandle
Definition registry_store.hpp:18
std::shared_ptr< const ConditionRecord > ConditionRecordHandle
Definition registry_store.hpp:19
dcn::chain::ScalarLabel ScalarLabel
Definition registry.hpp:22
std::shared_ptr< const ConnectorRecord > ConnectorRecordHandle
Definition registry_store.hpp:17
std::string NameCursor
Definition registry_store.hpp:41
Definition format_hash.hpp:26
Definition registry_store.hpp:36
ConditionRecord record
Definition registry_store.hpp:38
chain::Address address
Definition registry_store.hpp:37
Definition registry_store.hpp:22
chain::Address address
Definition registry_store.hpp:23
ConnectorRecord record
Definition registry_store.hpp:24
std::vector< ScalarLabel > canonical_scalar_labels
Definition registry_store.hpp:26
evmc::bytes32 format_hash
Definition registry_store.hpp:25
Definition registry_store.hpp:44
bool has_more
Definition registry_store.hpp:47
std::vector< std::string > entries
Definition registry_store.hpp:45
std::optional< std::string > next_after
Definition registry_store.hpp:46
Definition registry_store.hpp:30
TransformationRecord record
Definition registry_store.hpp:32
chain::Address address
Definition registry_store.hpp:31