QEloquent 1.1.0
Qt most flexible ORM.
Loading...
Searching...
No Matches
connection.h
1#ifndef QELOQUENT_CONNECTION_H
2#define QELOQUENT_CONNECTION_H
3
4#include <QEloquent/global.h>
5#include <QEloquent/result.h>
6
7#include <QSharedDataPointer>
8
9class QDateTime;
10class QSqlDatabase;
11class QSqlQuery;
12class QSqlError;
13class QUrl;
14
15namespace QEloquent {
16
17class Error;
18class Driver;
19
20class ConnectionData;
21class QELOQUENT_EXPORT Connection
22{
23public:
24 enum TimePrecision {
25 DefaultPrecision,
26 HighPrecision,
27 RealTimePrecision,
28 LowPrecision
29 };
30
31 Connection();
32 Connection(const Connection &);
34 Connection &operator=(const Connection &);
35 Connection &operator=(Connection &&);
37
38 QString name() const;
39
40 bool isOpen() const;
41 bool open();
42 bool open(const QString &user, const QString &password);
43 void close();
44
45 bool beginTransaction();
46 bool commitTransaction();
47 bool rollbackTransaction();
48
49 Result<QDateTime, Error> now(TimePrecision precision = TimePrecision::DefaultPrecision) const;
50
51 Result<QSqlQuery, QSqlError> exec(const QString &query, bool cache = false) const;
52 QSqlError lastError() const;
53
54 Driver *driver() const;
55
56 const QSqlDatabase database() const;
57 QSqlDatabase database();
58
59 bool isValid() const;
60
61 operator const QSqlDatabase() const;
62 operator QSqlDatabase();
63
64 static Connection connection(const QString &name);
65 static Connection addConnection(const QString &name, const QUrl &url);
66 static Connection addConnection(const QString &name, const QString &type, const QString &dbName, int port = -1);
67 static Connection addConnection(const QString &name, const QString &type, const QString &dbName, int port, const QString &userName, const QString &password);
68 static Connection addConnection(const QString &name, const QSqlDatabase &db, bool ownDb = false);
69 static void removeConnection(const QString &name);
70
71 static QString defaultConnectionName();
72 static Connection defaultConnection();
73 static void setDefault(const Connection &connection);
74
75private:
76 Connection(ConnectionData *data);
77
78 QExplicitlySharedDataPointer<ConnectionData> data;
79
80 static QString s_defaultConnection;
81 static QMap<QString, Connection> s_connections;
82};
83
84} // namespace QEloquent
85
86#endif // QELOQUENT_CONNECTION_H
Manages database connections and transactions.
Definition connection.h:22