summaryrefslogtreecommitdiff
path: root/src/database/query.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/query.hpp')
-rw-r--r--src/database/query.hpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/database/query.hpp b/src/database/query.hpp
index 7f8aecb..547138f 100644
--- a/src/database/query.hpp
+++ b/src/database/query.hpp
@@ -1,5 +1,7 @@
#pragma once
+#include <biboumi.h>
+
#include <utils/optional_bool.hpp>
#include <database/statement.hpp>
#include <database/column.hpp>
@@ -13,6 +15,20 @@ void actual_bind(Statement& statement, const std::string& value, int index);
void actual_bind(Statement& statement, const std::size_t value, int index);
void actual_bind(Statement& statement, const OptionalBool& value, int index);
+#ifdef DEBUG_SQL_QUERIES
+#include <utils/scopetimer.hpp>
+
+inline auto make_sql_timer()
+{
+ return make_scope_timer([](const std::chrono::steady_clock::duration& elapsed)
+ {
+ const auto seconds = std::chrono::duration_cast<std::chrono::seconds>(elapsed);
+ const auto rest = elapsed - seconds;
+ log_debug("Query executed in ", seconds.count(), ".", rest.count(), "s.");
+ });
+}
+#endif
+
struct Query
{
std::string body;
@@ -22,6 +38,18 @@ struct Query
Query(std::string str):
body(std::move(str))
{}
+
+#ifdef DEBUG_SQL_QUERIES
+ auto log_and_time()
+ {
+ std::ostringstream os;
+ os << this->body << "; ";
+ for (const auto& param: this->params)
+ os << "'" << param << "' ";
+ log_debug("SQL QUERY: ", os.str());
+ return make_sql_timer();
+ }
+#endif
};
template <typename ColumnType>
@@ -58,3 +86,4 @@ operator<<(Query& query, const Integer& i)
actual_add_param(query, i);
return query;
}
+