mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2024-11-14 04:57:21 +01:00
Now QueryBilder, QueryResult, and TableBullder are returned wrapped into a Ref<> from the database subsystem by default.
This commit is contained in:
parent
8e624d8b5a
commit
02c4294cda
@ -7,18 +7,18 @@
|
|||||||
void Database::connect(const std::string &connection_str) {
|
void Database::connect(const std::string &connection_str) {
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryResult *Database::query(const std::string &query) {
|
Ref<QueryResult> Database::query(const std::string &query) {
|
||||||
return nullptr;
|
return Ref<QueryResult>();
|
||||||
}
|
}
|
||||||
void Database::query_run(const std::string &query) {
|
void Database::query_run(const std::string &query) {
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder *Database::get_query_builder() {
|
Ref<QueryBuilder> Database::get_query_builder() {
|
||||||
return new QueryBuilder();
|
return Ref<QueryBuilder>(new QueryBuilder());
|
||||||
}
|
}
|
||||||
|
|
||||||
TableBuilder *Database::get_table_builder() {
|
Ref<TableBuilder> Database::get_table_builder() {
|
||||||
return new TableBuilder();
|
return Ref<TableBuilder>(new TableBuilder());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Database::escape(const std::string str) {
|
std::string Database::escape(const std::string str) {
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
#include "core/reference.h"
|
||||||
|
|
||||||
enum QueryErrorCode {
|
enum QueryErrorCode {
|
||||||
OK,
|
OK,
|
||||||
ERROR
|
ERROR
|
||||||
@ -29,11 +31,11 @@ public:
|
|||||||
//virtual void where(""); etc
|
//virtual void where(""); etc
|
||||||
|
|
||||||
virtual void connect(const std::string &connection_str);
|
virtual void connect(const std::string &connection_str);
|
||||||
virtual QueryResult *query(const std::string &query);
|
virtual Ref<QueryResult> query(const std::string &query);
|
||||||
virtual void query_run(const std::string &query);
|
virtual void query_run(const std::string &query);
|
||||||
|
|
||||||
virtual QueryBuilder *get_query_builder();
|
virtual Ref<QueryBuilder> get_query_builder();
|
||||||
virtual TableBuilder *get_table_builder();
|
virtual Ref<TableBuilder> get_table_builder();
|
||||||
|
|
||||||
virtual std::string escape(const std::string str);
|
virtual std::string escape(const std::string str);
|
||||||
virtual void escape(const std::string str, std::string *to);
|
virtual void escape(const std::string str, std::string *to);
|
||||||
|
@ -219,8 +219,8 @@ QueryBuilder *QueryBuilder::reset() {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryResult *QueryBuilder::run() {
|
Ref<QueryResult> QueryBuilder::run() {
|
||||||
return nullptr;
|
return Ref<QueryResult>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QueryBuilder::run_query() {
|
void QueryBuilder::run_query() {
|
||||||
|
@ -96,7 +96,7 @@ public:
|
|||||||
|
|
||||||
virtual QueryBuilder *reset();
|
virtual QueryBuilder *reset();
|
||||||
|
|
||||||
virtual QueryResult *run();
|
virtual Ref<QueryResult> run();
|
||||||
virtual void run_query();
|
virtual void run_query();
|
||||||
|
|
||||||
std::string get_result();
|
std::string get_result();
|
||||||
|
@ -69,8 +69,8 @@ TableBuilder *TableBuilder::references(const std::string &table, const std::stri
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryResult *TableBuilder::run() {
|
Ref<QueryResult> TableBuilder::run() {
|
||||||
return nullptr;
|
return Ref<QueryResult>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TableBuilder::run_query() {
|
void TableBuilder::run_query() {
|
||||||
|
@ -30,7 +30,7 @@ public:
|
|||||||
virtual TableBuilder *foreign_key(const std::string &name);
|
virtual TableBuilder *foreign_key(const std::string &name);
|
||||||
virtual TableBuilder *references(const std::string &table, const std::string &name);
|
virtual TableBuilder *references(const std::string &table, const std::string &name);
|
||||||
|
|
||||||
virtual QueryResult *run();
|
virtual Ref<QueryResult> run();
|
||||||
virtual void run_query();
|
virtual void run_query();
|
||||||
|
|
||||||
void print();
|
void print();
|
||||||
|
@ -25,7 +25,7 @@ void MysqlDatabase::connect(const std::string &connection_str) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryResult *MysqlDatabase::query(const std::string &query) {
|
Ref<QueryResult> MysqlDatabase::query(const std::string &query) {
|
||||||
if (!mysql)
|
if (!mysql)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ QueryResult *MysqlDatabase::query(const std::string &query) {
|
|||||||
res->result = result;
|
res->result = result;
|
||||||
//res->next_row();
|
//res->next_row();
|
||||||
|
|
||||||
return res;
|
return Ref<QueryResult>(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MysqlDatabase::query_run(const std::string &query) {
|
void MysqlDatabase::query_run(const std::string &query) {
|
||||||
@ -87,15 +87,15 @@ void MysqlDatabase::query_run(const std::string &query) {
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder *MysqlDatabase::get_query_builder() {
|
Ref<QueryBuilder> MysqlDatabase::get_query_builder() {
|
||||||
MysqlQueryBuilder *b = new MysqlQueryBuilder();
|
MysqlQueryBuilder *b = new MysqlQueryBuilder();
|
||||||
b->_db = this;
|
b->_db = this;
|
||||||
|
|
||||||
return b;
|
return Ref<QueryBuilder>(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
TableBuilder *MysqlDatabase::get_table_builder() {
|
Ref<TableBuilder> MysqlDatabase::get_table_builder() {
|
||||||
return new MysqlTableBuilder();
|
return Ref<TableBuilder>(new MysqlTableBuilder());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string MysqlDatabase::escape(const std::string str) {
|
std::string MysqlDatabase::escape(const std::string str) {
|
||||||
|
@ -16,11 +16,11 @@
|
|||||||
class MysqlDatabase : public Database {
|
class MysqlDatabase : public Database {
|
||||||
public:
|
public:
|
||||||
void connect(const std::string &connection_str);
|
void connect(const std::string &connection_str);
|
||||||
QueryResult *query(const std::string &query);
|
Ref<QueryResult> query(const std::string &query);
|
||||||
void query_run(const std::string &query);
|
void query_run(const std::string &query);
|
||||||
|
|
||||||
QueryBuilder *get_query_builder();
|
Ref<QueryBuilder> get_query_builder();
|
||||||
TableBuilder *get_table_builder();
|
Ref<TableBuilder> get_table_builder();
|
||||||
|
|
||||||
std::string escape(const std::string str);
|
std::string escape(const std::string str);
|
||||||
void escape(const std::string str, std::string *to);
|
void escape(const std::string str, std::string *to);
|
||||||
|
@ -92,7 +92,7 @@ void MysqlQueryBuilder::end_command() {
|
|||||||
query_result += ";";
|
query_result += ";";
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryResult *MysqlQueryBuilder::run() {
|
Ref<QueryResult> MysqlQueryBuilder::run() {
|
||||||
end_command();
|
end_command();
|
||||||
|
|
||||||
if (!_db) {
|
if (!_db) {
|
||||||
|
@ -36,7 +36,7 @@ public:
|
|||||||
|
|
||||||
void end_command();
|
void end_command();
|
||||||
|
|
||||||
QueryResult *run();
|
Ref<QueryResult> run();
|
||||||
void run_query();
|
void run_query();
|
||||||
|
|
||||||
MysqlQueryBuilder();
|
MysqlQueryBuilder();
|
||||||
|
@ -18,14 +18,14 @@ void SQLite3Database::_unregister() {
|
|||||||
DatabaseManager::_unregister_db_creation_func("sqlite");
|
DatabaseManager::_unregister_db_creation_func("sqlite");
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder *SQLite3Database::get_query_builder() {
|
Ref<QueryBuilder> SQLite3Database::get_query_builder() {
|
||||||
SQLite3QueryBuilder *b = new SQLite3QueryBuilder();
|
SQLite3QueryBuilder *b = new SQLite3QueryBuilder();
|
||||||
b->_db = this;
|
b->_db = this;
|
||||||
|
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
TableBuilder *SQLite3Database::get_table_builder() {
|
Ref<TableBuilder> SQLite3Database::get_table_builder() {
|
||||||
SQLite3TableBuilder *b = new SQLite3TableBuilder();
|
SQLite3TableBuilder *b = new SQLite3TableBuilder();
|
||||||
b->_db = this;
|
b->_db = this;
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ void SQLite3Database::connect(const std::string &connection_str) {
|
|||||||
ret = sqlite3_open(connection_str.c_str(), &conn);
|
ret = sqlite3_open(connection_str.c_str(), &conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryResult *SQLite3Database::query(const std::string &query) {
|
Ref<QueryResult> SQLite3Database::query(const std::string &query) {
|
||||||
Sqlite3QueryResult *res = new Sqlite3QueryResult();
|
Sqlite3QueryResult *res = new Sqlite3QueryResult();
|
||||||
|
|
||||||
res->query(query, conn);
|
res->query(query, conn);
|
||||||
|
@ -19,11 +19,11 @@ public:
|
|||||||
static void _register();
|
static void _register();
|
||||||
static void _unregister();
|
static void _unregister();
|
||||||
|
|
||||||
QueryBuilder *get_query_builder();
|
Ref<QueryBuilder> get_query_builder();
|
||||||
TableBuilder *get_table_builder();
|
Ref<TableBuilder> get_table_builder();
|
||||||
|
|
||||||
void connect(const std::string &connection_str);
|
void connect(const std::string &connection_str);
|
||||||
QueryResult *query(const std::string &query);
|
Ref<QueryResult> query(const std::string &query);
|
||||||
void query_run(const std::string &query);
|
void query_run(const std::string &query);
|
||||||
|
|
||||||
std::string escape(const std::string str);
|
std::string escape(const std::string str);
|
||||||
|
@ -282,7 +282,7 @@ void SQLite3QueryBuilder::end_command() {
|
|||||||
query_result += ";";
|
query_result += ";";
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryResult *SQLite3QueryBuilder::run() {
|
Ref<QueryResult> SQLite3QueryBuilder::run() {
|
||||||
if (!_db) {
|
if (!_db) {
|
||||||
printf("SQLite3QueryBuilder::run !db!\n");
|
printf("SQLite3QueryBuilder::run !db!\n");
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ public:
|
|||||||
|
|
||||||
void end_command();
|
void end_command();
|
||||||
|
|
||||||
QueryResult *run();
|
Ref<QueryResult> run();
|
||||||
void run_query();
|
void run_query();
|
||||||
|
|
||||||
SQLite3QueryBuilder();
|
SQLite3QueryBuilder();
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "sqlite3_table_builder.h"
|
#include "sqlite3_table_builder.h"
|
||||||
|
|
||||||
|
#include "core/database/query_result.h"
|
||||||
|
|
||||||
#include "sqlite3_database.h"
|
#include "sqlite3_database.h"
|
||||||
|
|
||||||
TableBuilder *SQLite3TableBuilder::create_table(const std::string &name) {
|
TableBuilder *SQLite3TableBuilder::create_table(const std::string &name) {
|
||||||
@ -105,7 +107,7 @@ TableBuilder *SQLite3TableBuilder::references(const std::string &table, const st
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryResult *SQLite3TableBuilder::run() {
|
Ref<QueryResult> SQLite3TableBuilder::run() {
|
||||||
if (!_db) {
|
if (!_db) {
|
||||||
printf("SQLite3TableBuilder::run !db!\n");
|
printf("SQLite3TableBuilder::run !db!\n");
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ public:
|
|||||||
TableBuilder *foreign_key(const std::string &name);
|
TableBuilder *foreign_key(const std::string &name);
|
||||||
TableBuilder *references(const std::string &table, const std::string &name);
|
TableBuilder *references(const std::string &table, const std::string &name);
|
||||||
|
|
||||||
virtual QueryResult *run();
|
virtual Ref<QueryResult> run();
|
||||||
virtual void run_query();
|
virtual void run_query();
|
||||||
|
|
||||||
SQLite3TableBuilder();
|
SQLite3TableBuilder();
|
||||||
|
@ -7,23 +7,18 @@
|
|||||||
#include "core/database/query_result.h"
|
#include "core/database/query_result.h"
|
||||||
|
|
||||||
void MessagePage::index(Request *request) {
|
void MessagePage::index(Request *request) {
|
||||||
QueryBuilder *b = db->get_query_builder();
|
Ref<QueryBuilder> b = db->get_query_builder();
|
||||||
|
|
||||||
b->select("text")->from("message_page")->end_command();
|
b->select("text")->from("message_page")->end_command();
|
||||||
|
|
||||||
QueryResult *res = db->query(b->query_result);
|
Ref<QueryResult> res = db->query(b->query_result);
|
||||||
|
|
||||||
std::vector<std::string> msgs;
|
std::vector<std::string> msgs;
|
||||||
|
|
||||||
if (res) {
|
while (res->next_row()) {
|
||||||
while (res->next_row()) {
|
msgs.push_back(res->get_cell(0));
|
||||||
msgs.push_back(res->get_cell(0));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete res;
|
|
||||||
delete b;
|
|
||||||
|
|
||||||
std::string r = "<html><body>";
|
std::string r = "<html><body>";
|
||||||
|
|
||||||
for (uint32_t i = 0; i < messages.size(); ++i) {
|
for (uint32_t i = 0; i < messages.size(); ++i) {
|
||||||
@ -42,7 +37,7 @@ void MessagePage::index(Request *request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MessagePage::migrate() {
|
void MessagePage::migrate() {
|
||||||
TableBuilder *t = db->get_table_builder();
|
Ref<TableBuilder> t = db->get_table_builder();
|
||||||
|
|
||||||
t->drop_table("message_page");
|
t->drop_table("message_page");
|
||||||
db->query_run(t->result);
|
db->query_run(t->result);
|
||||||
@ -57,7 +52,7 @@ void MessagePage::migrate() {
|
|||||||
|
|
||||||
db->query(t->result);
|
db->query(t->result);
|
||||||
|
|
||||||
QueryBuilder *b = db->get_query_builder();
|
Ref<QueryBuilder> b = db->get_query_builder();
|
||||||
|
|
||||||
b->insert("message_page")->values("default, 'aaewdwd'");
|
b->insert("message_page")->values("default, 'aaewdwd'");
|
||||||
|
|
||||||
@ -71,8 +66,6 @@ void MessagePage::migrate() {
|
|||||||
printf("%s\n", b->query_result.c_str());
|
printf("%s\n", b->query_result.c_str());
|
||||||
|
|
||||||
db->query_run(b->query_result);
|
db->query_run(b->query_result);
|
||||||
|
|
||||||
delete t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MessagePage::MessagePage() :
|
MessagePage::MessagePage() :
|
||||||
|
@ -101,12 +101,9 @@ void UserModel::save_user(Ref<User> &user) {
|
|||||||
b->end_command();
|
b->end_command();
|
||||||
b->select_last_insert_id();
|
b->select_last_insert_id();
|
||||||
|
|
||||||
QueryResult *r = b->run();
|
Ref<QueryResult> r = b->run();
|
||||||
|
|
||||||
user->id = r->get_last_insert_rowid();
|
user->id = r->get_last_insert_rowid();
|
||||||
|
|
||||||
delete r;
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
b->udpate(_table_name);
|
b->udpate(_table_name);
|
||||||
b->set();
|
b->set();
|
||||||
|
Loading…
Reference in New Issue
Block a user