11#include <nlohmann/json.hpp>
12#include <mantisbase/core/private-impl/soci_custom_types.hpp>
14#ifdef MANTIS_SCRIPTING_ENABLED
15#include <dukglue/dukglue.h>
18#include "../mantisbase.h"
19#include "../utils/utils.h"
23 using json = nlohmann::json;
58 bool connect(
const std::string &conn_str);
81 [[nodiscard]] std::shared_ptr<soci::session>
session()
const;
95#ifdef MANTIS_SCRIPTING_ENABLED
96 static void registerDuktapeMethods();
116#ifdef MANTIS_SCRIPTING_ENABLED
117 duk_ret_t query(duk_context *ctx);
123 void writeCheckpoint()
const;
125 std::string m_connStr;
126 std::unique_ptr<soci::connection_pool> m_connPool;
141 logger_impl::start_query(query);
142 LogOrigin::dbTrace(fmt::format(
"$ sql << {}", query));
150 logger_impl *do_clone()
const override {
Database connection and session management.
Definition database.h:39
~Database()
Destructor (disconnects from database).
Definition database.cpp:20
const std::string & connectionStr() const
Definition database.cpp:112
void disconnect()
Close all database connections and destroy connection pool.
Definition database.cpp:114
bool createSysTables() const
Create system tables (mb_tables, mb_admins, etc.).
Definition database.cpp:154
bool connect(const std::string &conn_str)
Connect to database and initialize connection pool.
Definition database.cpp:24
bool isConnected() const
Check if database is connected.
Definition database.cpp:212
std::shared_ptr< soci::session > session() const
Get a database session from the connection pool.
Definition database.cpp:204
soci::connection_pool & connectionPool() const
Get access to the underlying connection pool.
Definition database.cpp:208
Database()
Construct database instance.
Definition database.cpp:17
MantisBase entry point.
Definition mantisbase.h:40
Logger implementation for soci, allowing us to override the default logging behaviour with our own cu...
Definition database.h:134
void start_query(std::string const &query) override
Called before query is executed by soci, we can log the query here.
Definition database.h:140
router.h
Definition auth.h:15
nlohmann::json json
Shorten JSON namespace.
Definition context_store.h:18