kDB: Knowledge DataBase
Loading...
Searching...
No Matches
Connection.h
1#ifndef _KDB_REPOSITORY_CONNECTION_H_
2#define _KDB_REPOSITORY_CONNECTION_H_
3
4#include <QSharedPointer>
5#include <QString>
6
7#include <kDB/Forward.h>
8#include <knowCore/ValueHash.h>
9#include <knowCore/WeakReference.h>
10
11#include "NamedTypes.h"
12#include "RDFEnvironment.h"
13
14class QUuid;
15
16namespace Cyqlops::Crypto
17{
18 class RSAAlgorithm;
19}
20
21namespace kDB
22{
23 namespace Repository
24 {
26 {
27 class knowDBCConnectionInterface;
28 template<typename _T_>
29 friend class knowCore::WeakReference;
30 friend class ConnectionHandle;
31 friend class GraphsManager;
32 friend class QueryConnectionInfo;
33 friend class SPARQLQuery;
34 friend class SPARQLFunctionsManager;
35 friend class Transaction;
36 friend class TripleStore;
37 friend class TriplesView;
48 friend class knowDBCConnectionInterface;
49 Connection(const QString& _host, int _port, const QString& _database = "kDB");
50 public:
51 static Connection create(const HostName& _host, int _port, const QString& _database = "kDB");
52 static Connection create(const SectionName& _section, const StoreName& _store, int _port,
53 const QString& _database = "kDB");
54 static Connection create(const StoreName& _store, int _port,
55 const QString& _database = "kDB");
56 Connection();
57 template<typename _T_>
58 requires std::same_as<_T_, Connection>
60 Connection(const Connection& _rhs);
61 Connection& operator=(const Connection& _rhs);
63 bool operator==(const Connection& _rhs) const { return d == _rhs.d; }
64 bool operator!=(const Connection& _rhs) const { return d != _rhs.d; }
69 bool isValid() const;
73 void disconnect();
78 cres_qresult<void> connect(bool _initialise_database = false);
82 bool isConnected() const;
83 GraphsManager* graphsManager() const;
84 NotificationsManager* notificationsManager();
85 SPARQLFunctionsManager* sparqlFunctionsManager() const;
86 cres_qresult<void> executeQueryFromFile(const QString& _fileName) const;
87 cres_qresult<void> executeQuery(const QString& _query) const;
88 cres_qresult<TripleStore> defaultTripleStore() const;
89 cres_qresult<TripleStore> infoTripleStore() const;
90 QUuid serverUuid() const;
98 Cyqlops::Crypto::RSAAlgorithm rsaAlgorithm() const;
102 cres_qresult<quint64> oid(const QString& _type) const;
107 cres_qresult<void> enableExtension(const QString& _extension);
112 bool isExtensionEnabled(const QString& _extension) const;
116 QUuid connectionUuid() const;
121 QUuid executeDisconnection(const std::function<void()>& _function) const;
122 void removeExecuteDisconnection(const QUuid& _uuid) const;
126 QUuid executeConnection(const std::function<void(const Connection&)>& _function) const;
127 void removeExecuteConnection(const QUuid& _uuid) const;
128 operator knowDBC::Connection();
132 knowDBC::Query createSQLQuery(const QString& _query = QString(),
133 const knowCore::ValueHash& _bindings = knowCore::ValueHash(),
134 const knowCore::ValueHash& _options
135 = knowCore::ValueHash()) const;
140 const QString& _query = QString(),
141 const knowCore::ValueHash& _bindings = knowCore::ValueHash(),
142 const knowCore::ValueHash& _options
143 = knowCore::ValueHash()) const;
147 template<typename _T_>
148 _T_* extensionObject() const;
156 template<typename _T_>
162 private:
163 void increaseSelfPCount();
164 void decreaseSelfPCount();
165 QObject* extensionObject(const std::type_index& _index) const;
166 void createExtensionObject(QObject* _object, const std::type_index& _index);
167 void addQueryFactory(const Interfaces::QueryFactory* _query_factory);
168 struct Private;
170 };
171 template<typename _T_>
172 requires std::same_as<_T_, Connection>
173 Connection::Connection(const knowCore::WeakReference<_T_>& _d) : d(_d.d)
174 {
175 increaseSelfPCount();
176 }
177 template<typename _T_>
179 {
180 return static_cast<_T_*>(extensionObject(typeid(_T_)));
181 }
182 template<typename _T_>
184 {
185 _T_* t = new _T_(*this);
186 createExtensionObject(t, typeid(_T_));
187 if constexpr(std::is_base_of_v<Interfaces::QueryFactory, _T_>)
188 {
189 addQueryFactory(t);
190 }
191 }
192
193 } // namespace Repository
194} // namespace kDB
195
196#endif
Definition Forward.h:6
Definition Connection.h:26
Cyqlops::Crypto::RSAAlgorithm rsaAlgorithm() const
Definition Connection.cpp:862
bool isValid() const
Definition Connection.cpp:523
bool isExtensionEnabled(const QString &_extension) const
Definition Connection.cpp:886
void createExtensionObject()
Definition Connection.h:183
QUuid executeDisconnection(const std::function< void()> &_function) const
Definition Connection.cpp:894
knowDBC::Query createSPARQLQuery(const RDFEnvironment &_environment=RDFEnvironment(), const QString &_query=QString(), const knowCore::ValueHash &_bindings=knowCore::ValueHash(), const knowCore::ValueHash &_options=knowCore::ValueHash()) const
Definition Connection.cpp:928
krQuery::Engine * krQueryEngine() const
Definition Connection.cpp:960
knowDBC::Query createSQLQuery(const QString &_query=QString(), const knowCore::ValueHash &_bindings=knowCore::ValueHash(), const knowCore::ValueHash &_options=knowCore::ValueHash()) const
Definition Connection.cpp:917
knowCore::Uri serverUri() const
Definition Connection.cpp:856
bool isConnected() const
Definition Connection.cpp:817
cres_qresult< void > enableExtension(const QString &_extension)
Definition Connection.cpp:866
cres_qresult< quint64 > oid(const QString &_type) const
Definition Connection.cpp:864
_T_ * extensionObject() const
Definition Connection.h:178
void disconnect()
Definition Connection.cpp:525
QUuid executeConnection(const std::function< void(const Connection &)> &_function) const
Definition Connection.cpp:906
cres_qresult< void > connect(bool _initialise_database=false)
Definition Connection.cpp:527
QUuid connectionUuid() const
Definition Connection.cpp:892
Definition GraphsManager.h:10
Definition QueryFactory.h:11
Definition NotificationsManager.h:11
Definition QueryConnectionInfo.h:8
Definition RDFEnvironment.h:15
Definition SPARQLAlgebraToPostgresSQL_p.h:8
Definition SPARQLFunctionsManager.h:11
Definition Transaction.h:19
Definition TripleStore.h:19
Definition TriplesView.h:19
Definition Engine.h:13
Definition Uri.h:15
Definition ValueHash.h:13
Definition WeakReference.h:18
Definition Connection.h:18
Definition Query.h:12
Definition Connection_p.h:22
Definition QueryExecutorVisitor_p.h:17