14#ifndef MANTISBASE_REALTIME_H
15#define MANTISBASE_REALTIME_H
17#include <condition_variable>
25#include "nlohmann/json.hpp"
27#if MANTIS_HAS_POSTGRESQL
28#include <soci/postgresql/soci-postgresql.h>
42 using json = nlohmann::json;
57 [[nodiscard]]
bool init()
const;
60 void addDbHooks(
const std::string &entity_name)
const;
66 static void addDbHooks(
const Entity &entity,
const std::shared_ptr<soci::session> &sess);
69 void dropDbHooks(
const std::string &entity_name)
const;
72 static void dropDbHooks(
const std::string &entity_name,
const std::shared_ptr<soci::session> &sess);
81#if MANTIS_HAS_POSTGRESQL
83 static void createNotifyFunction(soci::session &sql);
86 static std::string buildTriggerObject(
const Entity &entity,
const std::string &action );
89 std::unique_ptr<RtDbWorker> m_rtDbWorker;
110#if MANTIS_HAS_POSTGRESQL
111 void runPostgreSQL();
116#if MANTIS_HAS_POSTGRESQL
123 std::string m_db_type;
125 std::atomic<bool> m_running;
128 std::condition_variable cv;
129 std::unique_ptr<soci::session> sql_ro;
131#if MANTIS_HAS_POSTGRESQL
132 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.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:15
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