continue sqlite3 mini-orm
This commit is contained in:
parent
95ff5dd5eb
commit
ae98d199e7
@ -49,6 +49,7 @@ using db3_stmt_t = std::unique_ptr<sqlite3_stmt, sqlite3_statement_deleter>;
|
|||||||
|
|
||||||
[[nodiscard]] auto execute_sql(sqlite3 &db3, const std::string &sql,
|
[[nodiscard]] auto execute_sql(sqlite3 &db3, const std::string &sql,
|
||||||
std::string &err) -> bool;
|
std::string &err) -> bool;
|
||||||
|
|
||||||
void set_journal_mode(sqlite3 &db3);
|
void set_journal_mode(sqlite3 &db3);
|
||||||
|
|
||||||
struct comp_data_t final {
|
struct comp_data_t final {
|
||||||
|
@ -114,11 +114,16 @@ auto db_update::go() const -> db_result<context> {
|
|||||||
res = std::visit(
|
res = std::visit(
|
||||||
overloaded{
|
overloaded{
|
||||||
[this, &idx](std::int64_t data) -> std::int32_t {
|
[this, &idx](std::int64_t data) -> std::int32_t {
|
||||||
return sqlite3_bind_int64(context_->stmt.get(), idx + 1, data);
|
return sqlite3_bind_int64(
|
||||||
|
context_->stmt.get(),
|
||||||
|
idx + static_cast<std::int32_t>(context_->values.size()) + 1,
|
||||||
|
data);
|
||||||
},
|
},
|
||||||
[this, &idx](const std::string &data) -> std::int32_t {
|
[this, &idx](const std::string &data) -> std::int32_t {
|
||||||
return sqlite3_bind_text(context_->stmt.get(), idx + 1,
|
return sqlite3_bind_text(
|
||||||
data.c_str(), -1, nullptr);
|
context_->stmt.get(),
|
||||||
|
idx + static_cast<std::int32_t>(context_->values.size()) + 1,
|
||||||
|
data.c_str(), -1, nullptr);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
context_->ands.at(static_cast<std::size_t>(idx)).value);
|
context_->ands.at(static_cast<std::size_t>(idx)).value);
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "database/db_delete.hpp"
|
#include "database/db_delete.hpp"
|
||||||
#include "database/db_insert.hpp"
|
#include "database/db_insert.hpp"
|
||||||
#include "database/db_select.hpp"
|
#include "database/db_select.hpp"
|
||||||
|
#include "database/db_update.hpp"
|
||||||
#include "utils/path.hpp"
|
#include "utils/path.hpp"
|
||||||
|
|
||||||
namespace repertory {
|
namespace repertory {
|
||||||
@ -111,7 +112,7 @@ TEST(database, db_insert_or_replace_query) {
|
|||||||
.or_replace()
|
.or_replace()
|
||||||
.column_value("column1", "test1")
|
.column_value("column1", "test1")
|
||||||
.column_value("column2", "test2");
|
.column_value("column2", "test2");
|
||||||
query_str = query.dump();
|
auto query_str = query.dump();
|
||||||
std::cout << query_str << std::endl;
|
std::cout << query_str << std::endl;
|
||||||
EXPECT_STREQ(
|
EXPECT_STREQ(
|
||||||
R"(INSERT OR REPLACE INTO "table" ("column1", "column2") VALUES (?1, ?2);)",
|
R"(INSERT OR REPLACE INTO "table" ("column1", "column2") VALUES (?1, ?2);)",
|
||||||
@ -190,33 +191,16 @@ TEST(database, db_update_query) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto query = db::db_update{*db3.get(), "table"}
|
auto query = db::db_update{*db3.get(), "table"}
|
||||||
.column()
|
.column_value("column1", "moose")
|
||||||
.where("column1")
|
.where("column1")
|
||||||
.equals("test1")
|
.equals("test1")
|
||||||
.and_where("column2")
|
.and_where("column2")
|
||||||
.equals("test2");
|
.equals("test2");
|
||||||
auto query_str = query.dump();
|
auto query_str = query.dump();
|
||||||
std::cout << query_str << std::endl;
|
std::cout << query_str << std::endl;
|
||||||
EXPECT_STREQ(R"(UPDATE "table" SET ;)", query_str.c_str());
|
EXPECT_STREQ(
|
||||||
// auto res = query.go();
|
R"(UPDATE "table" SET "column1"=?1 WHERE ("column1"=?2 AND "column2"=?3);)",
|
||||||
//
|
query_str.c_str());
|
||||||
// EXPECT_TRUE(res.ok());
|
|
||||||
// EXPECT_TRUE(res.has_row());
|
|
||||||
// std::size_t row_count{};
|
|
||||||
// while (res.has_row()) {
|
|
||||||
// std::optional<db::db_select::row> row;
|
|
||||||
// EXPECT_TRUE(res.get_row(row));
|
|
||||||
// EXPECT_TRUE(row.has_value());
|
|
||||||
// if (row.has_value()) {
|
|
||||||
// for (const auto &column : row.value().get_columns()) {
|
|
||||||
// std::cout << column.get_index() << ':';
|
|
||||||
// std::cout << column.get_name() << ':';
|
|
||||||
// std::cout << column.get_value<std::string>() << std::endl;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// ++row_count;
|
|
||||||
// }
|
|
||||||
// EXPECT_EQ(std::size_t(1U), row_count);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
event_system::instance().stop();
|
event_system::instance().stop();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user