updated build system
This commit is contained in:
		@@ -24,11 +24,6 @@
 | 
			
		||||
#if defined(PROJECT_ENABLE_SQLITE)
 | 
			
		||||
 | 
			
		||||
namespace repertory::utils::db::sqlite {
 | 
			
		||||
void db_delete::context::clear() {
 | 
			
		||||
  where.reset();
 | 
			
		||||
  where_values.clear();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_delete::context::db_delete_op_t::dump() const -> std::string {
 | 
			
		||||
  return db_delete{ctx}.dump();
 | 
			
		||||
}
 | 
			
		||||
@@ -41,9 +36,9 @@ auto db_delete::dump() const -> std::string {
 | 
			
		||||
  std::stringstream query;
 | 
			
		||||
  query << "DELETE FROM \"" << context_->table_name << "\"";
 | 
			
		||||
 | 
			
		||||
  if (context_->where.has_value()) {
 | 
			
		||||
  if (context_->where_data) {
 | 
			
		||||
    std::int32_t idx{};
 | 
			
		||||
    query << " WHERE " << context_->where->dump(idx);
 | 
			
		||||
    query << " WHERE " << context_->where_data->base.dump(idx);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  query << ';';
 | 
			
		||||
@@ -65,8 +60,13 @@ auto db_delete::go() const -> db_result<context> {
 | 
			
		||||
    return {context_, res};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    return {context_, res};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (std::int32_t idx = 0;
 | 
			
		||||
       idx < static_cast<std::int32_t>(context_->where_values.size()); idx++) {
 | 
			
		||||
       idx < static_cast<std::int32_t>(context_->where_data->values.size());
 | 
			
		||||
       idx++) {
 | 
			
		||||
    res = std::visit(
 | 
			
		||||
        overloaded{
 | 
			
		||||
            [this, &idx](std::int64_t data) -> std::int32_t {
 | 
			
		||||
@@ -77,7 +77,7 @@ auto db_delete::go() const -> db_result<context> {
 | 
			
		||||
                                       data.c_str(), -1, nullptr);
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
        context_->where_values.at(static_cast<std::size_t>(idx)));
 | 
			
		||||
        context_->where_data->values.at(static_cast<std::size_t>(idx)));
 | 
			
		||||
    if (res != SQLITE_OK) {
 | 
			
		||||
      return {context_, res};
 | 
			
		||||
    }
 | 
			
		||||
@@ -87,19 +87,23 @@ auto db_delete::go() const -> db_result<context> {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_delete::group(context::w_t::group_func_t func) -> context::w_t::wn_t {
 | 
			
		||||
  if (not context_->where.has_value()) {
 | 
			
		||||
    context_->where = context::w_t{0U, context_};
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
 | 
			
		||||
        context::w_t{0U, context_},
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return context_->where->group(std::move(func));
 | 
			
		||||
  return context_->where_data->base.group(std::move(func));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_delete::where(std::string column_name) const -> context::w_t::cn_t {
 | 
			
		||||
  if (not context_->where.has_value()) {
 | 
			
		||||
    context_->where = context::w_t{0U, context_};
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
 | 
			
		||||
        context::w_t{0U, context_},
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return context_->where->where(column_name);
 | 
			
		||||
  return context_->where_data->base.where(column_name);
 | 
			
		||||
}
 | 
			
		||||
} // namespace repertory::utils::db::sqlite
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,16 +24,6 @@
 | 
			
		||||
#if defined(PROJECT_ENABLE_SQLITE)
 | 
			
		||||
 | 
			
		||||
namespace repertory::utils::db::sqlite {
 | 
			
		||||
void db_select::context::clear() {
 | 
			
		||||
  columns.clear();
 | 
			
		||||
  count_columns.clear();
 | 
			
		||||
  limit.reset();
 | 
			
		||||
  offset.reset();
 | 
			
		||||
  order_by.reset();
 | 
			
		||||
  where.reset();
 | 
			
		||||
  where_values.clear();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_select::context::db_select_op_t::dump() const -> std::string {
 | 
			
		||||
  return db_select{ctx}.dump();
 | 
			
		||||
}
 | 
			
		||||
@@ -72,8 +62,8 @@ auto db_select::column(std::string column_name) -> db_select & {
 | 
			
		||||
  return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_select::count(std::string column_name,
 | 
			
		||||
                      std::string as_column_name) -> db_select & {
 | 
			
		||||
auto db_select::count(std::string column_name, std::string as_column_name)
 | 
			
		||||
    -> db_select & {
 | 
			
		||||
  context_->count_columns[column_name] = as_column_name;
 | 
			
		||||
  return *this;
 | 
			
		||||
}
 | 
			
		||||
@@ -108,9 +98,9 @@ auto db_select::dump() const -> std::string {
 | 
			
		||||
  }
 | 
			
		||||
  query << " FROM \"" << context_->table_name << "\"";
 | 
			
		||||
 | 
			
		||||
  if (context_->where.has_value()) {
 | 
			
		||||
  if (context_->where_data) {
 | 
			
		||||
    std::int32_t idx{};
 | 
			
		||||
    query << " WHERE " << context_->where->dump(idx);
 | 
			
		||||
    query << " WHERE " << context_->where_data->base.dump(idx);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (not context_->group_by.empty()) {
 | 
			
		||||
@@ -156,8 +146,13 @@ auto db_select::go() const -> db_result<context> {
 | 
			
		||||
    return {context_, res};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    return {context_, res};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (std::int32_t idx = 0;
 | 
			
		||||
       idx < static_cast<std::int32_t>(context_->where_values.size()); idx++) {
 | 
			
		||||
       idx < static_cast<std::int32_t>(context_->where_data->values.size());
 | 
			
		||||
       idx++) {
 | 
			
		||||
    res = std::visit(
 | 
			
		||||
        overloaded{
 | 
			
		||||
            [this, &idx](std::int64_t data) -> std::int32_t {
 | 
			
		||||
@@ -168,7 +163,7 @@ auto db_select::go() const -> db_result<context> {
 | 
			
		||||
                                       data.c_str(), -1, nullptr);
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
        context_->where_values.at(static_cast<std::size_t>(idx)));
 | 
			
		||||
        context_->where_data->values.at(static_cast<std::size_t>(idx)));
 | 
			
		||||
    if (res != SQLITE_OK) {
 | 
			
		||||
      return {context_, res};
 | 
			
		||||
    }
 | 
			
		||||
@@ -178,11 +173,13 @@ auto db_select::go() const -> db_result<context> {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_select::group(context::w_t::group_func_t func) -> context::w_t::wn_t {
 | 
			
		||||
  if (not context_->where.has_value()) {
 | 
			
		||||
    context_->where = context::w_t{0U, context_};
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
 | 
			
		||||
        context::w_t{0U, context_},
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return context_->where->group(std::move(func));
 | 
			
		||||
  return context_->where_data->base.group(std::move(func));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_select::group_by(std::string column_name) -> db_select & {
 | 
			
		||||
@@ -200,18 +197,20 @@ auto db_select::offset(std::int32_t value) -> db_select & {
 | 
			
		||||
  return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_select::order_by(std::string column_name,
 | 
			
		||||
                         bool ascending) -> db_select & {
 | 
			
		||||
auto db_select::order_by(std::string column_name, bool ascending)
 | 
			
		||||
    -> db_select & {
 | 
			
		||||
  context_->order_by = {column_name, ascending};
 | 
			
		||||
  return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_select::where(std::string column_name) const -> context::w_t::cn_t {
 | 
			
		||||
  if (not context_->where.has_value()) {
 | 
			
		||||
    context_->where = context::w_t{0U, context_};
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
 | 
			
		||||
        context::w_t{0U, context_},
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return context_->where->where(column_name);
 | 
			
		||||
  return context_->where_data->base.where(column_name);
 | 
			
		||||
}
 | 
			
		||||
} // namespace repertory::utils::db::sqlite
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,14 +24,6 @@
 | 
			
		||||
#if defined(PROJECT_ENABLE_SQLITE)
 | 
			
		||||
 | 
			
		||||
namespace repertory::utils::db::sqlite {
 | 
			
		||||
void db_update::context::clear() {
 | 
			
		||||
  column_values.clear();
 | 
			
		||||
  limit.reset();
 | 
			
		||||
  order_by.reset();
 | 
			
		||||
  where.reset();
 | 
			
		||||
  where_values.clear();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_update::context::db_update_op_t::dump() const -> std::string {
 | 
			
		||||
  return db_update{ctx}.dump();
 | 
			
		||||
}
 | 
			
		||||
@@ -53,8 +45,8 @@ auto db_update::context::db_update_op_t::order_by(std::string column_name,
 | 
			
		||||
  return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_update::column_value(std::string column_name,
 | 
			
		||||
                             db_types_t value) -> db_update & {
 | 
			
		||||
auto db_update::column_value(std::string column_name, db_types_t value)
 | 
			
		||||
    -> db_update & {
 | 
			
		||||
  context_->column_values[column_name] = value;
 | 
			
		||||
  return *this;
 | 
			
		||||
}
 | 
			
		||||
@@ -73,9 +65,9 @@ auto db_update::dump() const -> std::string {
 | 
			
		||||
    query << '"' << column->first << "\"=?" + std::to_string(idx + 1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (context_->where.has_value()) {
 | 
			
		||||
  if (context_->where_data) {
 | 
			
		||||
    auto idx{static_cast<std::int32_t>(context_->column_values.size())};
 | 
			
		||||
    query << " WHERE " << context_->where->dump(idx);
 | 
			
		||||
    query << " WHERE " << context_->where_data->base.dump(idx);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (context_->order_by.has_value()) {
 | 
			
		||||
@@ -124,29 +116,34 @@ auto db_update::go() const -> db_result<context> {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    return {context_, res};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (std::int32_t idx = 0;
 | 
			
		||||
       idx < static_cast<std::int32_t>(context_->where_values.size()); idx++) {
 | 
			
		||||
    res = std::visit(overloaded{
 | 
			
		||||
                         [this, &idx](std::int64_t data) -> std::int32_t {
 | 
			
		||||
                           return sqlite3_bind_int64(
 | 
			
		||||
                               context_->stmt.get(),
 | 
			
		||||
                               idx +
 | 
			
		||||
                                   static_cast<std::int32_t>(
 | 
			
		||||
                                       context_->column_values.size()) +
 | 
			
		||||
                                   1,
 | 
			
		||||
                               data);
 | 
			
		||||
                         },
 | 
			
		||||
                         [this, &idx](const std::string &data) -> std::int32_t {
 | 
			
		||||
                           return sqlite3_bind_text(
 | 
			
		||||
                               context_->stmt.get(),
 | 
			
		||||
                               idx +
 | 
			
		||||
                                   static_cast<std::int32_t>(
 | 
			
		||||
                                       context_->column_values.size()) +
 | 
			
		||||
                                   1,
 | 
			
		||||
                               data.c_str(), -1, nullptr);
 | 
			
		||||
                         },
 | 
			
		||||
                     },
 | 
			
		||||
                     context_->where_values.at(static_cast<std::size_t>(idx)));
 | 
			
		||||
       idx < static_cast<std::int32_t>(context_->where_data->values.size());
 | 
			
		||||
       idx++) {
 | 
			
		||||
    res = std::visit(
 | 
			
		||||
        overloaded{
 | 
			
		||||
            [this, &idx](std::int64_t data) -> std::int32_t {
 | 
			
		||||
              return sqlite3_bind_int64(
 | 
			
		||||
                  context_->stmt.get(),
 | 
			
		||||
                  idx +
 | 
			
		||||
                      static_cast<std::int32_t>(
 | 
			
		||||
                          context_->column_values.size()) +
 | 
			
		||||
                      1,
 | 
			
		||||
                  data);
 | 
			
		||||
            },
 | 
			
		||||
            [this, &idx](const std::string &data) -> std::int32_t {
 | 
			
		||||
              return sqlite3_bind_text(context_->stmt.get(),
 | 
			
		||||
                                       idx +
 | 
			
		||||
                                           static_cast<std::int32_t>(
 | 
			
		||||
                                               context_->column_values.size()) +
 | 
			
		||||
                                           1,
 | 
			
		||||
                                       data.c_str(), -1, nullptr);
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
        context_->where_data->values.at(static_cast<std::size_t>(idx)));
 | 
			
		||||
    if (res != SQLITE_OK) {
 | 
			
		||||
      return {context_, res};
 | 
			
		||||
    }
 | 
			
		||||
@@ -156,11 +153,13 @@ auto db_update::go() const -> db_result<context> {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_update::group(context::w_t::group_func_t func) -> context::w_t::wn_t {
 | 
			
		||||
  if (not context_->where.has_value()) {
 | 
			
		||||
    context_->where = context::w_t{0U, context_};
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
 | 
			
		||||
        context::w_t{0U, context_},
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return context_->where->group(std::move(func));
 | 
			
		||||
  return context_->where_data->base.group(std::move(func));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_update::limit(std::int32_t value) -> db_update & {
 | 
			
		||||
@@ -168,18 +167,20 @@ auto db_update::limit(std::int32_t value) -> db_update & {
 | 
			
		||||
  return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_update::order_by(std::string column_name,
 | 
			
		||||
                         bool ascending) -> db_update & {
 | 
			
		||||
auto db_update::order_by(std::string column_name, bool ascending)
 | 
			
		||||
    -> db_update & {
 | 
			
		||||
  context_->order_by = {column_name, ascending};
 | 
			
		||||
  return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto db_update::where(std::string column_name) const -> context::w_t::cn_t {
 | 
			
		||||
  if (not context_->where.has_value()) {
 | 
			
		||||
    context_->where = context::w_t{0U, context_};
 | 
			
		||||
  if (not context_->where_data) {
 | 
			
		||||
    context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
 | 
			
		||||
        context::w_t{0U, context_},
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return context_->where->where(column_name);
 | 
			
		||||
  return context_->where_data->base.where(column_name);
 | 
			
		||||
}
 | 
			
		||||
} // namespace repertory::utils::db::sqlite
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user