added sqlite connection class (progress)

This commit is contained in:
2023-11-07 23:07:49 +01:00
parent f4f5c00eec
commit 715f4dff8f
21 changed files with 645 additions and 73 deletions
+12 -21
View File
@@ -1,39 +1,30 @@
#include <utility>
#include "matador/sql/connection.hpp"
namespace matador::sql {
connection::connection(std::string dns)
: dns_(std::move(dns)) {}
connection::connection()
: query_(dialect_) {}
query_create_intermediate connection::create()
void connection::open()
{
return query_create_intermediate{*this, query_.create()};
is_open_ = true;
}
query_drop_intermediate connection::drop()
void connection::close()
{
return query_drop_intermediate{*this, query_.drop()};
is_open_ = false;
}
query_select_intermediate connection::select(std::initializer_list<std::string> column_names)
bool connection::is_open() const
{
return query_select_intermediate{*this, query_.select(column_names)};
return is_open_;
}
query_insert_intermediate connection::insert()
const std::string &connection::dns() const
{
return query_insert_intermediate{*this, query_.insert()};
}
query_update_intermediate connection::update(const std::string &table)
{
return query_update_intermediate{*this, query_.update(table)};
}
query_delete_intermediate connection::remove()
{
return query_delete_intermediate{*this, query_.remove()};
return dns_;
}
query_result<record> connection::fetch(const std::string &sql)
@@ -1,9 +1,9 @@
#include "matador/sql/connection_intermediates.hpp"
#include "matador/sql/connection.hpp"
#include "matador/sql/query_intermediates.hpp"
#include "matador/sql/session.hpp"
#include "matador/sql/query_builder.hpp"
namespace matador::sql {
connection &query_intermediate::db()
session &query_intermediate::db()
{
return db_;
}
@@ -23,7 +23,7 @@ record query_select_finish::fetch_one()
return db().fetch(query().compile()).begin();
}
query_intermediate::query_intermediate(connection &db, query_builder &query)
query_intermediate::query_intermediate(session &db, query_builder &query)
: db_(db), query_(query) {}
query_offset_intermediate query_order_direction_intermediate::offset(size_t offset)
+56
View File
@@ -0,0 +1,56 @@
#include "matador/sql/session.hpp"
#include <stdexcept>
namespace matador::sql {
session::session(connection_pool<connection> &pool)
: pool_(pool)
, query_(dialect_) {}
query_create_intermediate session::create()
{
return query_create_intermediate{*this, query_.create()};
}
query_drop_intermediate session::drop()
{
return query_drop_intermediate{*this, query_.drop()};
}
query_select_intermediate session::select(std::initializer_list<std::string> column_names)
{
return query_select_intermediate{*this, query_.select(column_names)};
}
query_insert_intermediate session::insert()
{
return query_insert_intermediate{*this, query_.insert()};
}
query_update_intermediate session::update(const std::string &table)
{
return query_update_intermediate{*this, query_.update(table)};
}
query_delete_intermediate session::remove()
{
return query_delete_intermediate{*this, query_.remove()};
}
query_result<record> session::fetch(const std::string &sql) {
auto c = pool_.acquire();
if (!c.valid()) {
throw std::logic_error("no database connection available");
}
return c->fetch(sql);
}
std::pair<size_t, std::string> session::execute(const std::string &sql) {
auto c = pool_.acquire();
if (!c.valid()) {
throw std::logic_error("no database connection available");
}
return c->execute(sql);
}
}