3232#include < vector>
3333#include < memory>
3434
35+ enum class WsjcppSqlQueryType {
36+ SELECT,
37+ INSERT,
38+ UPDATE,
39+ DELETE,
40+ };
41+
42+ enum class WsjcppSqlWhereType {
43+ LOGICAL_OPERATOR,
44+ CONDITION,
45+ SUB_CONDITION,
46+ };
47+
48+ enum class WsjcppSqlWhereConditionType {
49+ NOT_EQUAL,
50+ EQUAL,
51+ MORE_THEN,
52+ LESS_THEN,
53+ LIKE,
54+ };
55+
56+ enum class WsjcppSqlBuilderForDatabase {
57+ SQLITE3,
58+ };
59+
3560class WsjcppSqlBuilderHelpers {
3661public:
3762 static std::string escapingStringValue (const std::string &sValue );
3863};
3964
40- enum class WsjcppSqlQueryType { SELECT, INSERT, UPDATE, DELETE };
41-
42-
65+ class WsjcppSqlBuilder ;
4366class WsjcppSqlQuery ;
4467class WsjcppSqlInsert ;
4568class WsjcppSqlUpdate ;
4669class WsjcppSqlSelect ;
4770class WsjcppSqlDelete ;
4871template <class T > class WsjcppSqlWhere ;
4972
50-
5173class IWsjcppSqlBuilder {
5274public:
5375
5476 virtual bool hasErrors () = 0;
5577 virtual std::string sql () = 0;
78+ virtual void setDatabaseType (WsjcppSqlBuilderForDatabase dbType) = 0;
79+ virtual WsjcppSqlBuilderForDatabase databaseType () = 0;
5680
5781protected:
5882 friend WsjcppSqlWhere<WsjcppSqlInsert>;
@@ -63,7 +87,7 @@ class IWsjcppSqlBuilder {
6387 virtual void addError (const std::string &err) = 0;
6488};
6589
66- class WsjcppSqlBuilder ;
90+
6791
6892class WsjcppSqlQuery {
6993public:
@@ -80,8 +104,6 @@ class WsjcppSqlQuery {
80104 WsjcppSqlBuilder *m_builder;
81105};
82106
83- enum class WsjcppSqlWhereType { LOGICAL_OPERATOR, CONDITION, SUB_CONDITION };
84-
85107class WsjcppSqlWhereBase {
86108public:
87109 WsjcppSqlWhereBase (WsjcppSqlWhereType type);
@@ -104,8 +126,6 @@ class WsjcppSqlWhereAnd : public WsjcppSqlWhereBase {
104126 virtual std::string sql () override ;
105127};
106128
107- enum class WsjcppSqlWhereConditionType { NOT_EQUAL, EQUAL, MORE_THEN, LESS_THEN, LIKE };
108-
109129class WsjcppSqlWhereCondition : public WsjcppSqlWhereBase {
110130public:
111131 WsjcppSqlWhereCondition (const std::string &name, WsjcppSqlWhereConditionType comparator, const std::string &value);
@@ -313,6 +333,8 @@ class WsjcppSqlDelete : public WsjcppSqlQuery {
313333
314334class WsjcppSqlBuilder : public IWsjcppSqlBuilder {
315335public:
336+ WsjcppSqlBuilder (WsjcppSqlBuilderForDatabase dbType = WsjcppSqlBuilderForDatabase::SQLITE3);
337+
316338 // TODO begin / end transaction can be added here
317339
318340 WsjcppSqlSelect &selectFrom (const std::string &tableName);
@@ -328,6 +350,9 @@ class WsjcppSqlBuilder : public IWsjcppSqlBuilder {
328350 virtual bool hasErrors () override ;
329351 virtual std::string sql () override ;
330352
353+ virtual void setDatabaseType (WsjcppSqlBuilderForDatabase dbType) override ;
354+ virtual WsjcppSqlBuilderForDatabase databaseType () override ;
355+
331356protected:
332357 friend WsjcppSqlSelect;
333358 friend WsjcppSqlInsert;
@@ -338,4 +363,5 @@ class WsjcppSqlBuilder : public IWsjcppSqlBuilder {
338363private:
339364 std::vector<std::string> m_errors;
340365 std::vector<std::shared_ptr<WsjcppSqlQuery>> m_queries;
366+ WsjcppSqlBuilderForDatabase m_dbType;
341367};
0 commit comments