14#ifndef MANTISBASE_REALTIME_H
15#define MANTISBASE_REALTIME_H
17#include <condition_variable>
25#include "nlohmann/json.hpp"
28#include <soci/postgresql/soci-postgresql.h>
42 using json = nlohmann::json;
56 ~RealtimeDB() { std::cout <<
"RealtimeDB Des()" << std::endl; }
59 [[nodiscard]]
bool init()
const;
62 void addDbHooks(
const std::string &entity_name)
const;
68 static void addDbHooks(
const Entity &entity,
const std::shared_ptr<soci::session> &sess);
71 void dropDbHooks(
const std::string &entity_name)
const;
74 static void dropDbHooks(
const std::string &entity_name,
const std::shared_ptr<soci::session> &sess);
85 static void createNotifyFunction(soci::session &sql);
88 static std::string buildTriggerObject(
const Entity &entity,
const std::string &action );
91 std::unique_ptr<RtDbWorker> m_rtDbWorker;
113 void runPostgreSQL();
125 std::string m_db_type;
127 std::atomic<bool> m_running;
130 std::condition_variable cv;
131 std::unique_ptr<soci::session> sql_ro;
134 std::unique_ptr<PGconn,
decltype(&PQfinish)> psql{
nullptr, &PQfinish};
Represents a database table/entity with schema and CRUD operations.
Definition entity.h:39
MantisBase entry point.
Definition mantisbase.h:40
void addDbHooks(const std::string &entity_name) const
Definition realtime.cpp:59
bool init() const
Definition realtime.cpp:13
void stopWorker() const
Definition realtime.cpp:189
void runWorker(const RtCallback &callback)
Definition realtime.cpp:182
~RealtimeDB()
Definition realtime.h:56
RealtimeDB()
Definition realtime.cpp:9
void dropDbHooks(const std::string &entity_name) const
Definition realtime.cpp:147
void stopWorker()
Definition realtime.cpp:306
RtDbWorker()
Definition realtime.cpp:259
bool isDbRunning() const
Definition realtime.cpp:293
void addCallback(const RtCallback &cb)
Definition realtime.cpp:302
~RtDbWorker()
Definition realtime.cpp:289
Convenience header that includes all MantisBase public API headers.
router.h
Definition auth.h:16
std::function< void(const json &)> RtCallback
Definition realtime.h:45
std::string getCurrentTimestampUTC()
Definition utils.h:289
nlohmann::json json
Shorten JSON namespace.
Definition context_store.h:18
Definition log_database.h:20