From d3f304856883b1968fe16ac15e0b7a6cc319d13e Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Thu, 10 Oct 2024 14:20:19 -0500 Subject: [PATCH] updated build system --- .../librepertory/src/providers/meta_db.cpp | 3 + support/include/utils/db/sqlite/db_select.hpp | 4 +- support/include/utils/db/sqlite/db_update.hpp | 4 +- .../utils/db/sqlite/db_where_limit_t.hpp | 235 ------------------ .../include/utils/db/sqlite/db_where_t.hpp | 16 +- 5 files changed, 21 insertions(+), 241 deletions(-) delete mode 100644 support/include/utils/db/sqlite/db_where_limit_t.hpp diff --git a/repertory/librepertory/src/providers/meta_db.cpp b/repertory/librepertory/src/providers/meta_db.cpp index a3cb74a0..0cbcfc14 100644 --- a/repertory/librepertory/src/providers/meta_db.cpp +++ b/repertory/librepertory/src/providers/meta_db.cpp @@ -82,6 +82,7 @@ auto meta_db::get_api_path(const std::string &source_path, .column("api_path") .where("source_path") .equals(source_path) + .op() .limit(1) .go(); @@ -120,6 +121,7 @@ auto meta_db::get_item_meta(const std::string &api_path, .where("api_path") .equals(api_path) .limit(1) + .op() .go(); if (not result.has_row()) { return api_error::item_not_found; @@ -159,6 +161,7 @@ auto meta_db::get_item_meta(const std::string &api_path, const std::string &key, .column("*") .where("api_path") .equals(api_path) + .op() .limit(1) .go(); if (not result.has_row()) { diff --git a/support/include/utils/db/sqlite/db_select.hpp b/support/include/utils/db/sqlite/db_select.hpp index a360a4f1..c0921a2c 100644 --- a/support/include/utils/db/sqlite/db_select.hpp +++ b/support/include/utils/db/sqlite/db_select.hpp @@ -25,7 +25,7 @@ #include "utils/db/sqlite/db_common.hpp" -#include "utils/db/sqlite/db_where_limit_t.hpp" +#include "utils/db/sqlite/db_where_t.hpp" namespace repertory::utils::db::sqlite { class db_select final { @@ -34,7 +34,7 @@ public: context(sqlite3 &db3_, std::string table_name_) : db_context_t(db3_, table_name_) {} - using w_t = db_where_limit_t; + using w_t = db_where_t; std::vector columns; std::map count_columns; diff --git a/support/include/utils/db/sqlite/db_update.hpp b/support/include/utils/db/sqlite/db_update.hpp index 40359aee..4174ced0 100644 --- a/support/include/utils/db/sqlite/db_update.hpp +++ b/support/include/utils/db/sqlite/db_update.hpp @@ -25,7 +25,7 @@ #include "utils/db/sqlite/db_common.hpp" -#include "utils/db/sqlite/db_where_limit_t.hpp" +#include "utils/db/sqlite/db_where_t.hpp" namespace repertory::utils::db::sqlite { class db_update final { @@ -34,7 +34,7 @@ public: context(sqlite3 &db3_, std::string table_name_) : db_context_t(db3_, table_name_) {} - using w_t = db_where_limit_t; + using w_t = db_where_t; std::map column_values; std::optional limit; diff --git a/support/include/utils/db/sqlite/db_where_limit_t.hpp b/support/include/utils/db/sqlite/db_where_limit_t.hpp deleted file mode 100644 index 88fe657e..00000000 --- a/support/include/utils/db/sqlite/db_where_limit_t.hpp +++ /dev/null @@ -1,235 +0,0 @@ -/* - Copyright <2018-2024> - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ -#ifndef REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_LIMIT_T_HPP_ -#define REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_LIMIT_T_HPP_ -#if defined(PROJECT_ENABLE_SQLITE) - -#include "utils/db/sqlite/db_common.hpp" - -namespace repertory::utils::db::sqlite { -template -struct db_next_limit_t final { - std::shared_ptr ctx; - w_t *owner; - - std::string action; - - using group_func_t = std::function; - - [[nodiscard]] auto where(std::string column_name) -> cn_t { - return get_next().where(column_name); - } - - [[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); } - - [[nodiscard]] auto dump(std::int32_t &idx) const -> std::string { - return ctx->where->dump(idx); - } - - [[nodiscard]] auto get_next() -> w_t & { - return std::get(std::prev(owner->sub_actions->end())); - } - - [[nodiscard]] auto get_next() const -> const w_t & { - return std::get(std::prev(owner->sub_actions->end())); - } - - [[nodiscard]] auto go() const -> auto { return op_t{ctx}.go(); } - - [[nodiscard]] auto group(group_func_t func) -> wn_t { - return get_next().group(std::move(func)); - } - - [[nodiscard]] auto limit(std::int32_t value) -> op_t { - return op_t{ctx}.limit(value); - } - - [[nodiscard]] auto order_by(std::string column_name, bool ascending) -> op_t { - return op_t{ctx}.order_by(column_name, ascending); - } -}; - -template -struct db_where_next_limit_t final { - std::shared_ptr ctx; - w_t *owner; - - using n_t = db_next_limit_t; - - [[nodiscard]] auto and_() -> n_t { - owner->actions.emplace_back(n_t{ - ctx, - owner, - "AND", - }); - - owner->sub_actions.emplace_back(w_t{ - ctx, - }); - - return std::get(*std::prev(owner->actions.end())); - } - - [[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); } - - [[nodiscard]] auto dump(std::int32_t &idx) const -> std::string { - return ctx->where->dump(idx); - } - - [[nodiscard]] auto go() const -> auto { return op_t{ctx}.go(); } - - [[nodiscard]] auto limit(std::int32_t value) -> op_t { - return op_t{ctx}.limit(value); - } - - [[nodiscard]] auto order_by(std::string column_name, bool ascending) -> op_t { - return op_t{ctx}.order_by(column_name, ascending); - } - - [[nodiscard]] auto or_() -> n_t { - owner->actions.emplace_back(n_t{ - ctx, - owner, - "OR", - }); - - owner->sub_actions.emplace_back(w_t{ - ctx, - }); - - return std::get(*std::prev(owner->actions.end())); - } -}; - -template -struct db_comp_next_limit_t final { - std::shared_ptr ctx; - w_t *owner; - std::string column_name; - - using wn_t = db_where_next_limit_t; - - [[nodiscard]] auto create(std::string operation, db_types_t value) { - owner->actions.emplace_back(db_comp_data_t{ - column_name, - operation, - }); - - ctx->where_values.push_back(value); - - return wn_t{ - ctx, - owner, - }; - } - - auto equals(db_types_t value) -> wn_t { return create("=", value); }; - - auto gt(db_types_t value) -> wn_t { return create(">", value); } - - auto gte(db_types_t value) -> wn_t { return create(">=", value); } - - auto like(db_types_t value) -> wn_t { return create("LIKE", value); } - - auto lt(db_types_t value) -> wn_t { return create("<", value); } - - auto lte(db_types_t value) -> wn_t { return create("<=", value); } - - auto not_equals(db_types_t value) -> wn_t { return create("!=", value); }; -}; - -template struct db_where_limit_t final { - std::shared_ptr ctx; - - using cn_t = db_comp_next_limit_t; - using wn_t = db_where_next_limit_t; - using n_t = db_next_limit_t; - - using group_func_t = std::function; - - using action_t = std::variant; - - std::vector actions{}; - std::vector sub_actions{}; - - [[nodiscard]] static auto dump(std::int32_t &idx, - auto &&data) -> std::string { - std::stringstream stream; - - for (auto &&action : data.actions) { - std::visit(overloaded{ - [&idx, &stream](const db_comp_data_t &comp) { - stream << '"' << comp.column_name << '"' << comp.op_type - << '?' + std::to_string(++idx); - }, - [&idx, &stream](const n_t &next) { - stream << ' ' << next.action << ' ' - << dump(idx, next.get_next()); - }, - [&idx, &stream](const db_where_limit_t &where) { - stream << '(' << dump(idx, where) << ')'; - }, - }, - action); - } - - return stream.str(); - } - - [[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); } - - [[nodiscard]] auto dump(std::int32_t &idx) const -> std::string { - return dump(idx, *this); - } - - [[nodiscard]] auto group(group_func_t func) -> wn_t { - db_where_limit_t where{ctx}; - func(where); - - actions.emplace_back(std::move(where)); - return wn_t{ - ctx, - this, - }; - } - - [[nodiscard]] auto limit(std::int32_t value) -> op_t { - return op_t{ctx}.limit(value); - } - - [[nodiscard]] auto order_by(std::string column_name, bool ascending) -> op_t { - return op_t{ctx}.order_by(column_name, ascending); - } - - [[nodiscard]] auto where(std::string column_name) -> cn_t { - return cn_t{ - ctx, - this, - column_name, - }; - } -}; -} // namespace repertory::utils::db::sqlite - -#endif // defined(PROJECT_ENABLE_SQLITE) -#endif // REPERTORY_INCLUDE_UTILS_DB_SQLITE_DB_WHERE_LIMIT_T_HPP_ diff --git a/support/include/utils/db/sqlite/db_where_t.hpp b/support/include/utils/db/sqlite/db_where_t.hpp index a2ba7af5..ea0dc5b1 100644 --- a/support/include/utils/db/sqlite/db_where_t.hpp +++ b/support/include/utils/db/sqlite/db_where_t.hpp @@ -46,11 +46,11 @@ struct db_next_t final { } [[nodiscard]] auto get_next() -> w_t & { - return std::get(std::prev(owner->sub_actions->end())); + return std::get(std::prev(owner->sub_actions.end())); } [[nodiscard]] auto get_next() const -> const w_t & { - return std::get(std::prev(owner->sub_actions->end())); + return std::get(std::prev(owner->sub_actions.end())); } [[nodiscard]] auto go() const -> auto { return op_t{ctx}.go(); } @@ -58,6 +58,12 @@ struct db_next_t final { [[nodiscard]] auto group(group_func_t func) -> wn_t { return get_next().group(std::move(func)); } + + [[nodiscard]] auto op() -> op_t { + return op_t{ + ctx, + }; + } }; template @@ -89,6 +95,12 @@ struct db_where_next_t final { [[nodiscard]] auto go() const -> auto { return op_t{ctx}.go(); } + [[nodiscard]] auto op() -> op_t { + return op_t{ + ctx, + }; + } + [[nodiscard]] auto or_() -> n_t { owner->actions.emplace_back(n_t{ ctx,