Mercurial > dedupe
annotate SQLGenerator.hpp @ 61:e5fa379d4030
Clean up headers.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Fri, 14 Sep 2012 20:41:35 +0200 |
| parents | 74be5a2f49db |
| children | aaf0a2878f67 |
| rev | line source |
|---|---|
|
59
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 #ifndef SQLGENERATOR_HPP |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
2 #define SQLGENERATOR_HPP |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
3 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
4 #include "OrderedPair.hpp" |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
5 #include "UniqueString.hpp" |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
6 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
7 #include <QtCore/QVariant> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
8 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
9 #include <QtSql/QSqlQuery> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
10 #include <QtSql/QSqlRecord> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
11 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
12 #include <boost/optional.hpp> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
13 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
14 template<typename T> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
15 struct SQLGenerator |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
16 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
17 }; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
18 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
19 template<> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
20 struct SQLGenerator<int> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
21 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
22 static QString fieldName(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
23 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
24 return QString("%1_Int").arg(prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
25 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
26 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
27 static QString createFields(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
28 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
29 return QString("%1 INTEGER").arg(fieldName(prefix)); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
30 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
31 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
32 static QString valueString(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
33 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
34 return QString(":") + fieldName(prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
35 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
36 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
37 static void bindValue(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
38 int value, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
39 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
40 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
41 query.bindValue(valueString(prefix), value); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
42 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
43 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
44 static void bindValues(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
45 const QVariantList& values, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
46 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
47 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
48 query.bindValue(valueString(prefix), values); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
49 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
50 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
51 static void bindValues(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
52 const QList<int>& values, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
53 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
54 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
55 QVariantList list; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
56 foreach(int value, values) { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
57 list << value; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
58 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
59 bindValues(query, list, prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
60 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
61 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
62 static boost::optional<int> extract(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
63 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
64 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
65 int fieldNo = query.record().indexOf(fieldName(prefix)); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
66 if (query.at() >= 0) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
67 return query.value(fieldNo).toInt(); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
68 else |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
69 return boost::optional<int>(); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
70 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
71 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
72 }; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
73 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
74 template<> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
75 struct SQLGenerator<QString> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
76 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
77 static QString fieldName(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
78 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
79 return QString("%1_QString").arg(prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
80 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
81 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
82 static QString createFields(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
83 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
84 return QString("%1 TEXT").arg(fieldName(prefix)); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
85 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
86 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
87 static QString valueString(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
88 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
89 return QString(":") + fieldName(prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
90 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
91 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
92 static QString restrict(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
93 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
94 return QString("%1 = %2").arg(fieldName(prefix)).arg(valueString(prefix)); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
95 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
96 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
97 static void bindValue(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
98 const QString& value, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
99 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
100 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
101 query.bindValue(valueString(prefix), value); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
102 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
103 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
104 static void bindValues(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
105 const QVariantList& value, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
106 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
107 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
108 query.bindValue(valueString(prefix), value); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
109 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
110 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
111 static void bindValues(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
112 const QList<QString>& values, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
113 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
114 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
115 QVariantList list; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
116 foreach(const QString& value, values) { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
117 list << value; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
118 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
119 bindValues(query, list, prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
120 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
121 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
122 static boost::optional<QString> extract(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
123 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
124 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
125 int fieldNo = query.record().indexOf(fieldName(prefix)); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
126 if (query.at() >= 0) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
127 return query.value(fieldNo).toString(); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
128 else |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
129 return boost::optional<QString>(); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
130 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
131 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
132 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
133 }; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
134 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
135 template<> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
136 struct SQLGenerator<UniqueString> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
137 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
138 static QString fieldName(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
139 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
140 return QString("%1_QString").arg(prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
141 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
142 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
143 static QString createFields(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
144 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
145 return QString("%1 TEXT").arg(fieldName(prefix)); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
146 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
147 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
148 static QString valueString(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
149 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
150 return QString(":") + fieldName(prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
151 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
152 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
153 static QString restrict(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
154 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
155 return QString("%1 = %2").arg(fieldName(prefix)).arg(valueString(prefix)); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
156 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
157 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
158 static void bindValue(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
159 const QString& value, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
160 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
161 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
162 query.bindValue(valueString(prefix), value); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
163 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
164 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
165 static void bindValues(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
166 const QVariantList& values, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
167 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
168 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
169 query.bindValue(valueString(prefix), values); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
170 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
171 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
172 static void bindValues(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
173 const QList<UniqueString>& values, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
174 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
175 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
176 QVariantList list; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
177 foreach(const UniqueString& value, values) { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
178 list << static_cast<const QString>(value); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
179 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
180 bindValues(query, list, prefix); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
181 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
182 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
183 static boost::optional<QString> extract(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
184 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
185 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
186 int fieldNo = query.record().indexOf(fieldName(prefix)); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
187 if (query.at() >= 0) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
188 return query.value(fieldNo).toString(); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
189 else |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
190 return boost::optional<QString>(); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
191 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
192 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
193 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
194 }; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
195 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
196 template<typename T> |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
197 struct SQLGenerator<OrderedPair<T> > |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
198 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
199 static QString fieldName(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
200 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
201 return SQLGenerator<T>::fieldName(prefix + "_1") + ", " + |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
202 SQLGenerator<T>::fieldName(prefix + "_2"); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
203 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
204 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
205 static QString createFields(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
206 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
207 return SQLGenerator<T>::createFields(prefix + "_1") + ", " + |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
208 SQLGenerator<T>::createFields(prefix + "_2"); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
209 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
210 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
211 static QString restriction(const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
212 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
213 return SQLGenerator<T>::restrict(prefix + "_1") + " AND " + |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
214 SQLGenerator<T>::restrict(prefix + "_2"); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
215 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
216 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
217 static QString valueString(const QString &prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
218 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
219 return SQLGenerator<T>::valueString(prefix + "_1") + ", " + |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
220 SQLGenerator<T>::valueString(prefix + "_2"); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
221 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
222 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
223 static void bindValue(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
224 const OrderedPair<T>& value, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
225 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
226 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
227 SQLGenerator<T>::bindValue(query, value.first, prefix + "_1"); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
228 SQLGenerator<T>::bindValue(query, value.second, prefix + "_2"); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
229 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
230 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
231 static void bindValues(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
232 const QList<OrderedPair<T> >& values, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
233 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
234 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
235 QList<T> first; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
236 QList<T> second; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
237 foreach(OrderedPair<T> value, values) { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
238 first << value.first; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
239 second << value.second; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
240 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
241 SQLGenerator<T>::bindValues(query, first, prefix + "_1"); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
242 SQLGenerator<T>::bindValues(query, second, prefix + "_2"); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
243 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
244 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
245 static boost::optional<OrderedPair<T> > |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
246 extract(QSqlQuery& query, |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
247 const QString& prefix = QString()) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
248 { |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
249 if (query.at() >= 0) |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
250 return OrderedPair<T> (*SQLGenerator<T>::extract(query, prefix + "_1"), |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
251 *SQLGenerator<T>::extract(query, prefix + "_2")); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
252 else |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
253 return boost::optional<OrderedPair<T> >(); |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
254 } |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
255 }; |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
256 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
257 |
|
74be5a2f49db
Separate SQLGenerator into a separate header.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
258 #endif //SQLGENERATOR_HPP |
