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
sqlite_registry_store.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <optional>
4#include <string>
5#include <vector>
6
7#include "registry_store.hpp"
8
9struct sqlite3;
10
11namespace dcn::registry
12{
14 {
15 public:
16 explicit SQLiteRegistryStore(const std::string & db_path);
17 ~SQLiteRegistryStore() override;
18
21
24
25 bool hasConnector(const std::string & name) const override;
26
27 std::optional<ConnectorRecordHandle> getConnectorRecordHandle(const std::string & name) const override;
28
29 std::optional<evmc::bytes32> getConnectorFormatHash(const std::string & name) const override;
30
31 bool addConnector(
32 const chain::Address & address,
33 const ConnectorRecord & record,
34 const evmc::bytes32 & format_hash,
35 const std::vector<ScalarLabel> & canonical_scalar_labels) override;
36
37 bool addConnectorsBatch(const std::vector<ConnectorBatchItem> & items, bool all_or_nothing = true) override;
38
39 std::size_t getFormatConnectorNamesCount(const evmc::bytes32 & format_hash) const override;
40
42 const evmc::bytes32 & format_hash,
43 const std::optional<NameCursor> & after,
44 std::size_t limit) const override;
45
46 std::size_t getFormatsCount() const override;
47
49 const std::optional<evmc::bytes32> & after,
50 std::size_t limit) const override;
51
52 std::optional<std::vector<ScalarLabel>> getScalarLabelsByFormatHash(const evmc::bytes32 & format_hash) const override;
53
54 bool hasTransformation(const std::string & name) const override;
55
56 std::optional<TransformationRecordHandle> getTransformationRecordHandle(
57 const std::string & name) const override;
58
60 const chain::Address & address,
61 const TransformationRecord & record) override;
62
64 const std::vector<TransformationBatchItem> & items,
65 bool all_or_nothing = true) override;
66
67 bool hasCondition(const std::string & name) const override;
68
69 std::optional<ConditionRecordHandle> getConditionRecordHandle(
70 const std::string & name) const override;
71
72 bool addCondition(
73 const chain::Address & address,
74 const ConditionRecord & record) override;
75
77 const std::vector<ConditionBatchItem> & items,
78 bool all_or_nothing = true) override;
79
81 const chain::Address & owner,
82 const std::optional<NameCursor> & after,
83 std::size_t limit) const override;
84
86 const chain::Address & owner,
87 const std::optional<NameCursor> & after,
88 std::size_t limit) const override;
89
91 const chain::Address & owner,
92 const std::optional<NameCursor> & after,
93 std::size_t limit) const override;
94
95 std::size_t getAccountsCount() const override;
96
98 const std::optional<chain::Address> & after,
99 std::size_t limit) const override;
100
101 bool checkpointWal(storage::sqlite::WalCheckpointMode mode) const override;
102
103 private:
104 sqlite3 * _db = nullptr;
105
106 bool _initializeSchema() const;
107 bool _exec(const char * sql) const;
108 bool _beginTransaction() const;
109 bool _commitTransaction() const;
110 void _rollbackTransaction() const;
111
112 NameCursorPage _getOwnedCursorFromTable(
113 const char * table_name,
114 const chain::Address & owner,
115 const std::optional<NameCursor> & after,
116 std::size_t limit) const;
117 };
118}
Definition registry_store.hpp:57
Definition sqlite_registry_store.hpp:14
bool addConditionsBatch(const std::vector< ConditionBatchItem > &items, bool all_or_nothing=true) override
Definition sqlite_registry_store.cpp:1296
std::optional< evmc::bytes32 > getConnectorFormatHash(const std::string &name) const override
Definition sqlite_registry_store.cpp:314
NameCursorPage getOwnedConditionsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const override
Definition sqlite_registry_store.cpp:1535
SQLiteRegistryStore(const SQLiteRegistryStore &)=delete
std::size_t getAccountsCount() const override
Definition sqlite_registry_store.cpp:1540
std::size_t getFormatConnectorNamesCount(const evmc::bytes32 &format_hash) const override
Definition sqlite_registry_store.cpp:627
NameCursorPage getFormatsCursor(const std::optional< evmc::bytes32 > &after, std::size_t limit) const override
Definition sqlite_registry_store.cpp:735
~SQLiteRegistryStore() override
Definition sqlite_registry_store.cpp:137
bool addConnector(const chain::Address &address, const ConnectorRecord &record, const evmc::bytes32 &format_hash, const std::vector< ScalarLabel > &canonical_scalar_labels) override
Definition sqlite_registry_store.cpp:333
NameCursorPage getAccountsCursor(const std::optional< chain::Address > &after, std::size_t limit) const override
Definition sqlite_registry_store.cpp:1566
bool hasTransformation(const std::string &name) const override
Definition sqlite_registry_store.cpp:847
SQLiteRegistryStore & operator=(SQLiteRegistryStore &&)=delete
SQLiteRegistryStore(SQLiteRegistryStore &&)=delete
bool addCondition(const chain::Address &address, const ConditionRecord &record) override
Definition sqlite_registry_store.cpp:1225
std::optional< ConditionRecordHandle > getConditionRecordHandle(const std::string &name) const override
Definition sqlite_registry_store.cpp:1182
SQLiteRegistryStore & operator=(const SQLiteRegistryStore &)=delete
bool hasCondition(const std::string &name) const override
Definition sqlite_registry_store.cpp:1147
bool hasConnector(const std::string &name) const override
Definition sqlite_registry_store.cpp:237
bool addTransformation(const chain::Address &address, const TransformationRecord &record) override
Definition sqlite_registry_store.cpp:925
NameCursorPage getOwnedTransformationsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const override
Definition sqlite_registry_store.cpp:1530
bool checkpointWal(storage::sqlite::WalCheckpointMode mode) const override
Definition sqlite_registry_store.cpp:1648
std::size_t getFormatsCount() const override
Definition sqlite_registry_store.cpp:717
bool addConnectorsBatch(const std::vector< ConnectorBatchItem > &items, bool all_or_nothing=true) override
Definition sqlite_registry_store.cpp:448
std::optional< std::vector< ScalarLabel > > getScalarLabelsByFormatHash(const evmc::bytes32 &format_hash) const override
Definition sqlite_registry_store.cpp:805
NameCursorPage getFormatConnectorNamesCursor(const evmc::bytes32 &format_hash, const std::optional< NameCursor > &after, std::size_t limit) const override
Definition sqlite_registry_store.cpp:649
std::optional< ConnectorRecordHandle > getConnectorRecordHandle(const std::string &name) const override
Definition sqlite_registry_store.cpp:272
std::optional< TransformationRecordHandle > getTransformationRecordHandle(const std::string &name) const override
Definition sqlite_registry_store.cpp:882
NameCursorPage getOwnedConnectorsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const override
Definition sqlite_registry_store.cpp:1525
bool addTransformationsBatch(const std::vector< TransformationBatchItem > &items, bool all_or_nothing=true) override
Definition sqlite_registry_store.cpp:996
std::string name
Definition ingestion.cpp:29
evmc::address Address
Definition address.hpp:18
Definition registry.hpp:23
WalCheckpointMode
Definition wal.hpp:9
Definition registry_store.hpp:50