bluemonkey database module
[profile/ivi/automotive-message-broker.git] / plugins / bluemonkey / db.h
1 #include <QObject>
2 #include <QSqlDatabase>
3 #include <QSqlQuery>
4 #include <QVariant>
5 #include <QVariantList>
6
7 class Database;
8 class Query;
9
10 class Database: public QObject
11 {
12         Q_OBJECT
13 public:
14         Database(QObject* parent = nullptr):QObject(parent){ }
15         ~Database() { close(); }
16
17         QSqlDatabase database() { return db; }
18
19 public Q_SLOTS:
20
21         bool open(QString connectionName, QString filename);
22         void close();
23
24         QObject* exec(QString query);
25
26         QString lastError();
27
28 private:
29         QSqlDatabase db;
30 };
31
32 class Query: public QObject
33 {
34         Q_OBJECT
35 public:
36         Query(QObject* parent = nullptr):QObject(parent){}
37         Query(QSqlQuery q, QObject* parent = nullptr);
38         Q_INVOKABLE Query(QString connectionName);
39 public Q_SLOTS:
40         void setConnectionName(QString connectionName);
41
42         bool exec(QString queryStr);
43
44         QVariantList results();
45
46 private:
47         QSqlQuery query;
48         QString mConnectionName;
49         QSqlDatabase db;
50 };
51
52
53 class BluemonkeyDatabaseModule : public QObject
54 {
55         Q_OBJECT
56 public:
57         BluemonkeyDatabaseModule(QObject* parent = nullptr): QObject(parent) { }
58
59 public Q_SLOTS:
60         QObject* createNewDatabase()
61         {
62                 return new Database(this);
63         }
64
65         QObject* createNewQuery()
66         {
67                 return new Query(this);
68         }
69 };