droplet 1.3.0
A multipurpose Discord bot with the hacker in mind
Loading...
Searching...
No Matches
Database.hpp
Go to the documentation of this file.
1/*
2 * (c) Copyright erarnitox.de - All rights reserved
3 * Author: Erarnitox <david@erarnitox.de>
4 *
5 * License: MIT License
6 *
7 * Description: This class manages Database access
8 * and provides a high level API for internal use
9 *
10 * Documentation: https://droplet.erarnitox.de/doxygen/html/database
11 */
12
13#pragma once
14
15#include <string>
16#include <utility>
17#include <vector>
18
19#include "DatabaseBackend.hpp"
20#include "DatabaseExecutor.hpp"
21#include "RowDTOAdapter.hpp"
22
28class Database {
29 public:
30 Database() = delete;
31
32 [[nodiscard]] static bool connect(const std::string& db_name,
33 const std::string& user,
34 const std::string& password,
35 const std::string& host,
36 const std::string& port);
37
38 [[nodiscard]] static bool connect(const std::string& connection_string);
39
40 static bool hasConnection() noexcept;
41 static void reconnect() noexcept;
42 static void disconnect() noexcept;
43 static NativeDatabase::Connection* getConnection() noexcept;
44};
45
46namespace database {
47
52template <typename... Types>
53[[nodiscard]] bool execQuery(const std::string& query, Types&&... args) noexcept {
54 return DatabaseExecutor::application_instance().execQuery(query, std::forward<Types>(args)...);
55}
56
57template <typename... Types>
58[[nodiscard]] RowDTOAdapter execSelect(const std::string& query, Types&&... args) noexcept {
59 return DatabaseExecutor::application_instance().execSelect(query, std::forward<Types>(args)...);
60}
61
62template <typename... Types>
63[[nodiscard]] std::vector<RowDTOAdapter> execSelectAll(const std::string& query, Types&&... args) noexcept {
64 return DatabaseExecutor::application_instance().execSelectAll(query, std::forward<Types>(args)...);
65}
66} // namespace database
std::vector< RowDTOAdapter > execSelectAll(const std::string &query, Types &&... args) noexcept
Definition DatabaseExecutor.hpp:97
RowDTOAdapter execSelect(const std::string &query, Types &&... args) noexcept
Definition DatabaseExecutor.hpp:73
bool execQuery(const std::string &query, Types &&... args) noexcept
Definition DatabaseExecutor.hpp:49
static DatabaseExecutor & application_instance()
Definition DatabaseExecutor.cpp:31
static bool hasConnection() noexcept
checks if the database has an active connection
Definition Database.cpp:68
static NativeDatabase::Connection * getConnection() noexcept
returns the database connection. Reconnects if the Database has no active connection
Definition Database.cpp:107
Database()=delete
static void disconnect() noexcept
disconnect from a postgres database
Definition Database.cpp:60
static bool connect(const std::string &db_name, const std::string &user, const std::string &password, const std::string &host, const std::string &port)
connect to a postgres database
Definition Database.cpp:32
static void reconnect() noexcept
reconnects to the database server if the connection was lost
Definition Database.cpp:78
Definition RowDTOAdapter.hpp:20
Definition DatabaseBackend.hpp:30
Definition Database.hpp:46
std::vector< RowDTOAdapter > execSelectAll(const std::string &query, Types &&... args) noexcept
Definition Database.hpp:63
bool execQuery(const std::string &query, Types &&... args) noexcept
Definition Database.hpp:53
RowDTOAdapter execSelect(const std::string &query, Types &&... args) noexcept
Definition Database.hpp:58