Formatting
publish / publish (push) Successful in 16m36s

This commit is contained in:
khodowany
2026-09-14 23:55:04 -05:00
parent 16c37ab1c5
commit 46f7c13121
23 changed files with 391 additions and 454 deletions
+7 -7
View File
@@ -35,14 +35,14 @@ struct connection_config {
std::vector<noto::pragma_setting> pragmas{};
};
auto validate(noto::connection_config const& config) -> std::expected<void, modulus::error>;
auto validate(noto::connection_config const &config) -> std::expected<void, modulus::error>;
auto memory_connection_config(std::string name = {}) -> noto::connection_config;
auto file_connection_config(std::string filename, std::string name = {}) -> noto::connection_config;
auto parse_database_config(boost::json::value const& value) -> std::expected<noto::connection_config, modulus::error>;
auto parse_database_configs(boost::json::value const& value) -> std::expected<std::vector<noto::connection_config>, modulus::error>;
auto load_database_configs(std::string const& path) -> std::expected<std::vector<noto::connection_config>, modulus::error>;
auto to_json(std::variant<std::bool_t, std::int64_t, std::string> const& value) -> boost::json::value;
auto to_json(noto::connection_config const& config) -> boost::json::value;
auto to_json(std::vector<noto::connection_config> const& configs) -> boost::json::value;
auto parse_database_config(boost::json::value const &value) -> std::expected<noto::connection_config, modulus::error>;
auto parse_database_configs(boost::json::value const &value) -> std::expected<std::vector<noto::connection_config>, modulus::error>;
auto load_database_configs(std::string const &path) -> std::expected<std::vector<noto::connection_config>, modulus::error>;
auto to_json(std::variant<std::bool_t, std::int64_t, std::string> const &value) -> boost::json::value;
auto to_json(noto::connection_config const &config) -> boost::json::value;
auto to_json(std::vector<noto::connection_config> const &configs) -> boost::json::value;
}
+11 -10
View File
@@ -28,6 +28,7 @@ namespace noto {
namespace detail {
struct statement_core;
struct connection_core;
}
@@ -46,7 +47,7 @@ struct sqlite_value {
sqlite_value(std::int32_t value);
sqlite_value(std::int64_t value);
sqlite_value(std::float64_t value);
sqlite_value(std::char_t const* value);
sqlite_value(std::char_t const *value);
sqlite_value(std::string value);
sqlite_value(std::string_view value);
sqlite_value(std::vector<std::byte> value);
@@ -84,11 +85,11 @@ class connection;
class statement {
public:
statement() = default;
statement(noto::statement const&) = delete;
statement(noto::statement&& other) noexcept = default;
statement(noto::statement const &) = delete;
statement(noto::statement &&other) noexcept = default;
~statement();
auto operator=(noto::statement const&) -> noto::statement& = delete;
auto operator=(noto::statement&& other) noexcept -> noto::statement& = default;
auto operator=(noto::statement const &) -> noto::statement & = delete;
auto operator=(noto::statement &&other) noexcept -> noto::statement & = default;
auto valid() const -> std::bool_t;
auto async_reset(std::vector<noto::sqlite_value> params = {}) -> boost::asio::awaitable<std::expected<void, modulus::error>>;
auto async_step() -> boost::asio::awaitable<std::expected<std::optional<std::vector<noto::sqlite_value>>, modulus::error>>;
@@ -105,11 +106,11 @@ private:
class connection {
public:
connection(boost::asio::any_io_executor executor, noto::connection_config config);
connection(noto::connection const&) = delete;
connection(noto::connection&&) noexcept = default;
connection(noto::connection const &) = delete;
connection(noto::connection &&) noexcept = default;
~connection();
auto operator=(noto::connection const&) -> noto::connection& = delete;
auto operator=(noto::connection&&) noexcept -> noto::connection& = default;
auto operator=(noto::connection const &) -> noto::connection & = delete;
auto operator=(noto::connection &&) noexcept -> noto::connection & = default;
auto config() const -> noto::connection_config;
auto state() const -> noto::connection_state;
auto async_connect() -> boost::asio::awaitable<std::expected<void, modulus::error>>;
@@ -168,7 +169,7 @@ auto noto::connection::async_with_transaction(noto::transaction_mode mode, CALLB
auto exception_status = std::optional<modulus::error>{};
try {
callback_status = co_await callback(connection);
} catch (std::exception const& error) {
} catch (std::exception const &error) {
exception_status = noto::detail::make_error(noto::detail::error_internal, std::string{"transaction callback threw: "} + error.what());
} catch (...) {
exception_status = noto::detail::make_error(noto::detail::error_internal, "transaction callback threw an unknown exception");
+3 -3
View File
@@ -51,7 +51,7 @@ struct connection_core : std::enable_shared_from_this<noto::detail::connection_c
boost::asio::strand<boost::asio::any_io_executor> strand;
noto::connection_config config{};
std::chrono::milliseconds busy_timeout{};
sqlite3* database{};
sqlite3 *database{};
std::shared_ptr<std::atomic<noto::connection_state>> state{std::make_shared<std::atomic<noto::connection_state>>(noto::connection_state::IDLE)};
std::bool_t busy{};
std::bool_t transaction_active{};
@@ -59,14 +59,14 @@ struct connection_core : std::enable_shared_from_this<noto::detail::connection_c
};
struct statement_core {
statement_core(std::shared_ptr<noto::detail::connection_core> connection, sqlite3_stmt* statement);
statement_core(std::shared_ptr<noto::detail::connection_core> connection, sqlite3_stmt *statement);
~statement_core();
auto async_reset(std::vector<noto::sqlite_value> params) -> boost::asio::awaitable<std::expected<void, modulus::error>>;
auto async_step() -> boost::asio::awaitable<std::expected<std::optional<std::vector<noto::sqlite_value>>, modulus::error>>;
auto async_execute(std::vector<noto::sqlite_value> params, noto::execute_options options) -> boost::asio::awaitable<std::expected<noto::query_result, modulus::error>>;
auto async_finalize() -> boost::asio::awaitable<std::expected<void, modulus::error>>;
std::shared_ptr<noto::detail::connection_core> connection{};
sqlite3_stmt* statement{};
sqlite3_stmt *statement{};
std::atomic_bool finalized{};
std::bool_t counted{};
};
+4 -3
View File
@@ -8,6 +8,7 @@
#include <modulus.hpp>
namespace noto::detail {
constexpr std::int32_t error_invalid_argument{1};
@@ -29,13 +30,13 @@ constexpr std::int32_t error_internal{15};
auto make_error(std::int32_t code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> modulus::error;
auto fail_void(modulus::error error) -> std::expected<void, modulus::error>;
auto fail_void(std::int32_t code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> std::expected<void, modulus::error>;
auto fail_void(std::expected<void, modulus::error> const& result) -> std::expected<void, modulus::error>;
auto fail_void(std::expected<void, modulus::error> const &result) -> std::expected<void, modulus::error>;
template <typename VALUE>
auto fail(modulus::error error) -> std::expected<VALUE, modulus::error>;
template <typename VALUE>
auto fail(std::expected<void, modulus::error> const& result) -> std::expected<VALUE, modulus::error>;
auto fail(std::expected<void, modulus::error> const &result) -> std::expected<VALUE, modulus::error>;
template <typename VALUE>
auto fail(std::int32_t code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> std::expected<VALUE, modulus::error>;
@@ -48,7 +49,7 @@ auto noto::detail::fail(modulus::error error) -> std::expected<VALUE, modulus::e
}
template <typename VALUE>
auto noto::detail::fail(std::expected<void, modulus::error> const& result) -> std::expected<VALUE, modulus::error> {
auto noto::detail::fail(std::expected<void, modulus::error> const &result) -> std::expected<VALUE, modulus::error> {
assert(!result);
return modulus::fail<VALUE>(result.error());
}
+1
View File
@@ -6,6 +6,7 @@
#include <modulus.hpp>
namespace noto::detail {
auto quote_sql_literal(std::string_view value, std::string_view label, std::bool_t allow_empty = true) -> std::expected<std::string, modulus::error>;
+3 -2
View File
@@ -6,11 +6,12 @@
#include <modulus.hpp>
#include <cstdint>
struct sqlite3;
namespace noto {
auto error_from(std::int32_t code, sqlite3* database = nullptr, std::string_view operation = {}) -> modulus::error;
auto result_from(std::int32_t code, sqlite3* database = nullptr, std::string_view operation = {}) -> std::expected<void, modulus::error>;
auto error_from(std::int32_t code, sqlite3 *database = nullptr, std::string_view operation = {}) -> modulus::error;
auto result_from(std::int32_t code, sqlite3 *database = nullptr, std::string_view operation = {}) -> std::expected<void, modulus::error>;
}
+4 -4
View File
@@ -18,8 +18,8 @@ struct migration {
std::string id{};
std::string description{};
std::string checksum{};
std::function<boost::asio::awaitable<std::expected<void, modulus::error>>(noto::connection&)> up{};
std::function<boost::asio::awaitable<std::expected<void, modulus::error>>(noto::connection&)> down{};
std::function<boost::asio::awaitable<std::expected<void, modulus::error>>(noto::connection &)> up{};
std::function<boost::asio::awaitable<std::expected<void, modulus::error>>(noto::connection &)> down{};
};
struct migration_record {
@@ -35,12 +35,12 @@ struct migration_options {
class migrator {
public:
migrator(noto::connection& connection, noto::migration_options options = {});
migrator(noto::connection &connection, noto::migration_options options = {});
auto async_applied_migrations() -> boost::asio::awaitable<std::expected<std::vector<noto::migration_record>, modulus::error>>;
auto async_migrate(std::vector<noto::migration> migrations) -> boost::asio::awaitable<std::expected<void, modulus::error>>;
auto async_rollback(std::vector<noto::migration> migrations, std::string target_id = {}) -> boost::asio::awaitable<std::expected<void, modulus::error>>;
private:
noto::connection* connection_{};
noto::connection *connection_{};
noto::migration_options options_{};
};
+8 -7
View File
@@ -9,13 +9,14 @@
#include <modulus.hpp>
namespace noto {
class trusted_sql_fragment {
public:
trusted_sql_fragment() = default;
static auto unsafe(std::string sql) -> std::expected<noto::trusted_sql_fragment, modulus::error>;
auto value() const -> std::string const&;
auto value() const -> std::string const &;
auto empty() const -> std::bool_t;
private:
explicit trusted_sql_fragment(std::string sql);
@@ -35,7 +36,7 @@ public:
static auto timestamp() -> noto::column_type;
static auto decimal(std::uint32_t precision, std::uint32_t scale) -> std::expected<noto::column_type, modulus::error>;
static auto trusted(noto::trusted_sql_fragment fragment) -> noto::column_type;
auto sql() const -> std::string const&;
auto sql() const -> std::string const &;
auto empty() const -> std::bool_t;
private:
explicit column_type(std::string sql);
@@ -53,7 +54,7 @@ public:
static auto boolean(std::bool_t value) -> noto::default_value;
static auto current_timestamp() -> noto::default_value;
static auto trusted_expression(noto::trusted_sql_fragment fragment) -> noto::default_value;
auto sql() const -> std::string const&;
auto sql() const -> std::string const &;
auto empty() const -> std::bool_t;
private:
explicit default_value(std::string sql);
@@ -137,10 +138,10 @@ struct index_definition {
};
auto quote_identifier(std::string_view identifier) -> std::expected<std::string, modulus::error>;
auto create_table_sql(noto::table_definition const& definition) -> std::expected<std::string, modulus::error>;
auto drop_table_sql(noto::table_name const& table, std::bool_t if_exists = true) -> std::expected<std::string, modulus::error>;
auto create_index_sql(noto::index_definition const& definition) -> std::expected<std::string, modulus::error>;
auto drop_index_sql(noto::index_definition const& definition) -> std::expected<std::string, modulus::error>;
auto create_table_sql(noto::table_definition const &definition) -> std::expected<std::string, modulus::error>;
auto drop_table_sql(noto::table_name const &table, std::bool_t if_exists = true) -> std::expected<std::string, modulus::error>;
auto create_index_sql(noto::index_definition const &definition) -> std::expected<std::string, modulus::error>;
auto drop_index_sql(noto::index_definition const &definition) -> std::expected<std::string, modulus::error>;
auto table_exists_sql() -> std::string;
}
+5 -4
View File
@@ -13,6 +13,7 @@ namespace noto {
namespace detail {
struct connection_core;
struct transaction_state;
}
@@ -28,11 +29,11 @@ class connection;
class transaction {
public:
transaction() = default;
transaction(noto::transaction const&) = delete;
transaction(noto::transaction&& other) noexcept;
transaction(noto::transaction const &) = delete;
transaction(noto::transaction &&other) noexcept;
~transaction();
auto operator=(noto::transaction const&) -> noto::transaction& = delete;
auto operator=(noto::transaction&& other) noexcept -> noto::transaction& = delete;
auto operator=(noto::transaction const &) -> noto::transaction & = delete;
auto operator=(noto::transaction &&other) noexcept -> noto::transaction & = delete;
auto active() const -> std::bool_t;
auto async_commit() -> boost::asio::awaitable<std::expected<void, modulus::error>>;
auto async_rollback() -> boost::asio::awaitable<std::expected<void, modulus::error>>;