Skip to content

Commit 56df29b

Browse files
committed
Refactor and prepare dbType
1 parent 1ba154c commit 56df29b

File tree

2 files changed

+52
-12
lines changed

2 files changed

+52
-12
lines changed

src/wsjcpp_sql_builder.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,10 @@ std::string WsjcppSqlDelete::sql() {
405405
// ---------------------------------------------------------------------
406406
// WsjcppSqlBuilder
407407

408+
WsjcppSqlBuilder::WsjcppSqlBuilder(WsjcppSqlBuilderForDatabase dbType) : m_dbType(dbType) {
409+
410+
}
411+
408412
WsjcppSqlSelect &WsjcppSqlBuilder::selectFrom(const std::string &tableName) {
409413
m_queries.push_back(std::make_shared<WsjcppSqlSelect>(tableName, this));
410414
// TODO check must be select last one;
@@ -453,6 +457,10 @@ WsjcppSqlDelete &WsjcppSqlBuilder::findDeleteOrCreate(const std::string &tableNa
453457
return deleteFrom(tableName);
454458
}
455459

460+
void WsjcppSqlBuilder::clear() {
461+
m_queries.clear();
462+
}
463+
456464
bool WsjcppSqlBuilder::hasErrors() {
457465
return m_errors.size() > 0;
458466
}
@@ -472,6 +480,12 @@ std::string WsjcppSqlBuilder::sql() {
472480
return ret;
473481
}
474482

475-
void WsjcppSqlBuilder::clear() {
476-
m_queries.clear();
477-
}
483+
484+
void WsjcppSqlBuilder::setDatabaseType(WsjcppSqlBuilderForDatabase dbType) {
485+
m_dbType = dbType;
486+
}
487+
488+
WsjcppSqlBuilderForDatabase WsjcppSqlBuilder::databaseType() {
489+
return m_dbType;
490+
}
491+

src/wsjcpp_sql_builder.h

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,27 +32,51 @@
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+
3560
class WsjcppSqlBuilderHelpers {
3661
public:
3762
static std::string escapingStringValue(const std::string &sValue);
3863
};
3964

40-
enum class WsjcppSqlQueryType { SELECT, INSERT, UPDATE, DELETE };
41-
42-
65+
class WsjcppSqlBuilder;
4366
class WsjcppSqlQuery;
4467
class WsjcppSqlInsert;
4568
class WsjcppSqlUpdate;
4669
class WsjcppSqlSelect;
4770
class WsjcppSqlDelete;
4871
template<class T> class WsjcppSqlWhere;
4972

50-
5173
class IWsjcppSqlBuilder {
5274
public:
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

5781
protected:
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

6892
class WsjcppSqlQuery {
6993
public:
@@ -80,8 +104,6 @@ class WsjcppSqlQuery {
80104
WsjcppSqlBuilder *m_builder;
81105
};
82106

83-
enum class WsjcppSqlWhereType { LOGICAL_OPERATOR, CONDITION, SUB_CONDITION };
84-
85107
class WsjcppSqlWhereBase {
86108
public:
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-
109129
class WsjcppSqlWhereCondition : public WsjcppSqlWhereBase {
110130
public:
111131
WsjcppSqlWhereCondition(const std::string &name, WsjcppSqlWhereConditionType comparator, const std::string &value);
@@ -313,6 +333,8 @@ class WsjcppSqlDelete : public WsjcppSqlQuery {
313333

314334
class WsjcppSqlBuilder : public IWsjcppSqlBuilder {
315335
public:
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+
331356
protected:
332357
friend WsjcppSqlSelect;
333358
friend WsjcppSqlInsert;
@@ -338,4 +363,5 @@ class WsjcppSqlBuilder : public IWsjcppSqlBuilder {
338363
private:
339364
std::vector<std::string> m_errors;
340365
std::vector<std::shared_ptr<WsjcppSqlQuery>> m_queries;
366+
WsjcppSqlBuilderForDatabase m_dbType;
341367
};

0 commit comments

Comments
 (0)