kDB: Knowledge DataBase
Loading...
Searching...
No Matches
SQLInterface_p.h
1#include <QList>
2#include <QPair>
3#include <QSharedPointer>
4#include <QString>
5
6#include <kDB/Repository/TripleStore.h>
7
8class QVariant;
9
10namespace kDB::Repository::DatabaseInterface::PostgreSQL
11{
13 {
14 SQLInterface(const SQLInterface& _rhs);
15 SQLInterface& operator=(const SQLInterface& _rhs);
18 public:
19 enum LockMode
20 {
21 AccessShare,
22 RowShare,
23 RowExclusive,
24 ShareUpdateExclusive,
25 Share,
26 ShareRowExclusive,
27 Exclusive,
28 AccessExclusive
29 };
30 static cres_qresult<void> lock(const Transaction& _transaction, const QString& _tablename,
31 LockMode _lockMode);
32 static cres_qresult<void> lockTripleStore(const Transaction& _transaction,
33 const QString& _tablename, bool _lock_versioning);
34
35 static QString subjectString(const knowRDF::Subject& _subject);
36
37 static cres_qresult<void> dropView(const QueryConnectionInfo& _connection_info,
38 const QString& _name);
39
40 static QString viewTableName(const Connection& _connection, const QString& _name);
41
42 static QString persistentDatasetsUnionTableName(const Connection& _connection,
43 const QString& _name);
44 static cres_qresult<void> updateUnionView(const QueryConnectionInfo& _connection_info,
45 bool _temporary, const QString& _name,
46 const QList<RDFDataset>& _documents);
47 static cres_qresult<void> addToUnion(const QueryConnectionInfo& _connection_info,
48 const knowCore::Uri& _union_name,
49 const knowCore::Uri& _dataset_name);
50 static cres_qresult<void> removeFromUnion(const QueryConnectionInfo& _connection_info,
51 const knowCore::Uri& _union_name,
52 const knowCore::Uri& _dataset_name);
53 static cres_qresult<void> clearUnion(const QueryConnectionInfo& _connection_info,
54 const knowCore::Uri& _union_name);
55 static QHash<QString, QStringList> getUnions(const QueryConnectionInfo& _connection_info);
56
57 static cres_qresult<void> setDefinition(const QueryConnectionInfo& _connection_info,
58 const RDFView::ViewDefinition& _definition);
59 static cres_qresult<void> removeViewDefinition(const QueryConnectionInfo& _connection_info,
60 const knowCore::Uri& _name);
62 getDefinitions(const QueryConnectionInfo& _connection_info);
63
64 static cres_qresult<QString> createTripleStore(const Transaction& _transaction,
65 const knowCore::Uri& _name);
66 static cres_qresult<void> removeTripleStore(const Transaction& _transaction,
67 const knowCore::Uri& _name);
68 static cres_qresult<void> createIndex(const Transaction& _transaction,
69 const TripleStore& _store, const QString& _field,
70 const QString& _index_method);
71
72 static cres_qresult<void> enableNotifications(const QueryConnectionInfo& _connection_info,
73 const TripleStore& _store);
74 static cres_qresult<void> disableNotifications(const QueryConnectionInfo& _connection_info,
75 const TripleStore& _store);
76 static QString notificationsChannel(const TripleStore& _store);
77
78 static cres_qresult<void> enableVersioning(const Transaction& _transaction,
79 const TripleStore& _store);
80 static cres_qresult<void> disableVersioning(const QueryConnectionInfo& _connection_info,
81 const TripleStore& _store);
82
83 static cres_qresult<void> startListeningChanges(const Transaction& _transaction,
84 const TripleStore& _store);
85 static cres_qresult<void> stopListeningChanges(const Transaction& _transaction,
86 const TripleStore& _store);
88 retrieveChanges(const Transaction& _transaction, const TripleStore& _store);
89
93 static QByteArray computeContentHash(const QueryConnectionInfo& _connection_info,
94 const QString& _triples_store_table_name);
100 static cres_qresult<int> createRevision(const Transaction& _transaction,
101 const QString& _triples_store_table_name,
102 const QByteArray& _revision_hash,
103 const QByteArray& _content_hash, int _historicity,
104 int _tags, int _distance_to_root);
109 static cres_qresult<void> removeRevision(const Transaction& _transaction,
110 const VersionControl::Revision& _revision);
111 static cres_qresult<void> recordDelta(const Transaction& _transaction,
112 const QString& _triples_store_table_name, int _parent,
113 int _child, const QByteArray& _hash,
114 const QByteArray& _delta);
115 static cres_qresult<void> recordDeltaSignature(const Transaction& _transaction,
116 const QString& _triples_store_table_name,
117 int _parent, int _child,
118 const QByteArray& _author,
119 const knowCore::Timestamp& _timestamp,
120 const QByteArray& _signature);
121 static cres_qresult<void> setRevisionHash(const Transaction& _transaction,
122 const QString& _triples_store_table_name,
123 int _revision, const QByteArray& _hash,
124 const QByteArray& _content_hash);
125 static cres_qresult<void> setRevisionTags(const Transaction& _transaction,
126 const QString& _triples_store_table_name,
127 const VersionControl::Revision& _revision, int _tags);
131 static cres_qresult<void> notifyNewRevision(const Transaction& _transaction,
132 const QString& _triples_store_table_name,
133 const QByteArray& _hash);
137 static cres_qresult<void> notifyRevisionTagsChanged(const Transaction& _transaction,
138 const QString& _triples_store_table_name,
139 const QByteArray& _hash);
140
141 static QList<VersionControl::Delta> deltas(const QueryConnectionInfo& _connection_info,
142 const QString& _triples_store_table_name,
143 int _revisionId);
144 static cres_qresult<VersionControl::Delta> delta(const QueryConnectionInfo& _connection_info,
145 const QString& _triples_store_table_name,
146 int _parent, int _child);
147 static cres_qresult<VersionControl::Delta> delta(const QueryConnectionInfo& _connection_info,
148 const QString& _triples_store_table_name,
149 const VersionControl::Revision& _parent,
150 const VersionControl::Revision& _child);
151 static cres_qresult<bool> hasDelta(const QueryConnectionInfo& _connection_info,
152 const QString& _triples_store_table_name,
153 const QByteArray& _parent, const QByteArray& _child);
154 static cres_qresult<bool> hasDelta(const QueryConnectionInfo& _connection_info,
155 const QString& _triples_store_table_name, int _parent,
156 int _child);
157
161 static cres_qresult<QList<VersionControl::Signature>>
162 deltaSignatures(const QueryConnectionInfo& _connection_info,
163 const QString& _triples_store_table_name, int _parent, int _child);
164
165 static cres_qresult<void> setUnitConversionFactors(const QueryConnectionInfo& _connection_info);
166 private:
167 static cres_qresult<QList<VersionControl::Revision>>
168 queryToRevisions(const QueryConnectionInfo& _connection_info,
169 const QString& _triples_store_table_name, knowDBC::Query& _query);
170 public:
171 static cres_qresult<QList<VersionControl::Revision>>
172 revisions(const QueryConnectionInfo& _connection_info,
173 const QString& _triples_store_table_name);
177 static cres_qresult<QList<VersionControl::Revision>>
178 revisionChildren(const QueryConnectionInfo& _connection_info,
179 const QString& _triples_store_table_name, int _revisionId);
180 static cres_qresult<QList<VersionControl::Revision>>
181 heads(const QueryConnectionInfo& _connection_info, const QString& _triples_store_table_name);
185 static cres_qresult<int> revisionId(const QueryConnectionInfo& _connection_info,
186 const QString& _triples_store_table_name,
187 const QByteArray& _hash);
188 static cres_qresult<kDB::Repository::VersionControl::Revision>
189 revision(const QueryConnectionInfo& _connection_info,
190 const QString& _triples_store_table_name, const QByteArray& _hash);
191 static cres_qresult<kDB::Repository::VersionControl::Revision>
192 revision(const QueryConnectionInfo& _connection_info,
193 const QString& _triples_store_table_name, int _revisionId);
194 static cres_qresult<kDB::Repository::VersionControl::Revision>
195 revision(const QueryConnectionInfo& _connection_info,
196 const QString& _triples_store_table_name, const QByteArray& _content_hash,
197 int _minimum_historicity);
198 static cres_qresult<bool> hasRevision(const QueryConnectionInfo& _connection_info,
199 const QString& _triples_store_table_name,
200 const QByteArray& _hash);
201
202 static QList<qint32> forwardRevisionPath(const QueryConnectionInfo& _connection_info,
203 const QString& _triples_store_table_name,
204 const QByteArray& _source_hash,
205 const QByteArray& _destination_hash);
206 static QList<qint32> forwardRevisionPath(const QueryConnectionInfo& _connection_info,
207 const QString& _triples_store_table_name,
208 int _source_id, int _destination_id);
209 static QPair<QList<qint32>, QList<qint32>>
210 revisionPath(const QueryConnectionInfo& _connection_info,
211 const QString& _triples_store_table_name, const QByteArray& _source_hash,
212 const QByteArray& _destination_hash);
213 static cres_qresult<QList<QList<qint32>>>
214 revisionPath(const QueryConnectionInfo& _connection_info,
215 const QString& _triples_store_table_name, const QList<QByteArray>& _revisions);
216
217 static cres_qresult<knowCore::Value> parseMeta(const QJsonValue& _value);
218 static cres_qresult<knowCore::Value> getMeta(const QueryConnectionInfo& _connection_info,
219 const QString& _store, const QStringList& _path);
220 static cres_qresult<void> setMeta(const QueryConnectionInfo& _connection_info,
221 const QString& _store, const QStringList& _path,
222 const knowCore::Value& _value);
223
224 static cres_qresult<void> dropMeta(const QueryConnectionInfo& _connection_info,
225 const QString& _store, const QStringList& _path);
226
227 static QList<knowCore::Uri> getGraphUris(const Transaction& _transaction,
228 const QString& _tablename, const QString& _field);
229 static cres_qresult<void> removeTriples(const Transaction& _transaction, TripleStore* _store,
230 const knowCore::Uri& _store_uri);
231 static cres_qresult<void> insertTriples(const Transaction& _transaction, TripleStore* _store,
232 const knowCore::Uri& _store_uri);
233
234 static knowRDF::Triple getTriple(const Connection& _connection, const knowDBC::Result& _result,
235 int _tuple, int _subject, int _predicate, int _object,
236 bool _blank_as_uri);
237
243 static cres_qresult<void> insertOrRemoveTriples(bool _insert,
244 const Transaction& _connection_info,
245 const QList<knowRDF::Triple>& _triples,
246 const QString& _table_to_model);
247 private:
248 bool insertValue(const QueryConnectionInfo& _connection_info, const QString& _tablename,
249 const QVariant& _variant);
250 };
251} // namespace kDB::Repository::DatabaseInterface::PostgreSQL
Definition Forward.h:10
Definition Revision.h:9
Definition ViewDefinition.h:10
Definition Connection.h:26
static cres_qresult< int > revisionId(const QueryConnectionInfo &_connection_info, const QString &_triples_store_table_name, const QByteArray &_hash)
Definition SQLInterface.cpp:1141
static cres_qresult< int > createRevision(const Transaction &_transaction, const QString &_triples_store_table_name, const QByteArray &_revision_hash, const QByteArray &_content_hash, int _historicity, int _tags, int _distance_to_root)
Definition SQLInterface.cpp:609
static cres_qresult< void > notifyRevisionTagsChanged(const Transaction &_transaction, const QString &_triples_store_table_name, const QByteArray &_hash)
Definition SQLInterface.cpp:799
static cres_qresult< void > insertOrRemoveTriples(bool _insert, const Transaction &_connection_info, const QList< knowRDF::Triple > &_triples, const QString &_table_to_model)
Definition SQLInterface.cpp:1671
static cres_qresult< QList< VersionControl::Signature > > deltaSignatures(const QueryConnectionInfo &_connection_info, const QString &_triples_store_table_name, int _parent, int _child)
Definition SQLInterface.cpp:814
static cres_qresult< QList< VersionControl::Revision > > revisionChildren(const QueryConnectionInfo &_connection_info, const QString &_triples_store_table_name, int _revisionId)
Definition SQLInterface.cpp:1027
static cres_qresult< void > removeRevision(const Transaction &_transaction, const VersionControl::Revision &_revision)
Definition SQLInterface.cpp:638
static cres_qresult< void > notifyNewRevision(const Transaction &_transaction, const QString &_triples_store_table_name, const QByteArray &_hash)
Definition SQLInterface.cpp:784
static QByteArray computeContentHash(const QueryConnectionInfo &_connection_info, const QString &_triples_store_table_name)
Definition SQLInterface.cpp:584
Definition QueryConnectionInfo.h:8
Definition Transaction.h:19
Definition TripleStore.h:19
Definition Timestamp.h:39
Definition Uri.h:15
Definition Value.h:21
Definition Query.h:12
Definition Result.h:23
Definition Subject.h:21
Definition Triple.h:19