3#include <StormByte/database/visibility.h>
13namespace StormByte::Database {
18 template<
class Query,
class PreparedSTMT>
class STORMBYTE_DATABASE_PUBLIC
Database {
66 return InternalQuery(query);
74 InternalQuery(query)->Step();
83 void PrepareSTMT(
const std::string& name,
const std::string& query) {
84 m_prepared_stmts.insert({name, InternalPrepare(name, query)});
91 void PrepareAll(
const std::map<std::string, std::string>& queries) {
92 for (
const auto& [name, query]: queries) {
93 PrepareSTMT(name, query);
103 return *m_prepared_stmts.at(name);
110 SilentQuery(
"BEGIN TRANSACTION;");
117 SilentQuery(
"BEGIN EXCLUSIVE TRANSACTION;");
124 SilentQuery(
"COMMIT;");
131 SilentQuery(
"ROLLBACK;");
149 virtual std::unique_ptr<PreparedSTMT>
InternalPrepare(
const std::string& name,
const std::string& query) = 0;
PreparedSTMT & GetPreparedSTMT(const std::string &name) const
Definition database.hxx:102
void PrepareSTMT(const std::string &name, const std::string &query)
Definition database.hxx:83
Database & operator=(const Database &)=delete
virtual void BeginTransaction()
Definition database.hxx:109
virtual void BeginExclusiveTransaction()
Definition database.hxx:116
virtual std::unique_ptr< PreparedSTMT > InternalPrepare(const std::string &name, const std::string &query)=0
Database(const Database &)=delete
virtual const std::string LastError() const =0
std::unique_ptr< Query > PrepareQuery(const std::string &query)
Definition database.hxx:65
std::map< std::string, std::unique_ptr< PreparedSTMT > > m_prepared_stmts
Prepared statements.
Definition database.hxx:141
Database(Database &&)=default
virtual std::unique_ptr< Query > InternalQuery(const std::string &query)=0
void SilentQuery(const std::string &query)
Definition database.hxx:73
Database & operator=(Database &&)=default
virtual void CommitTransaction()
Definition database.hxx:123
virtual ~Database()=default
virtual void RollbackTransaction()
Definition database.hxx:130
virtual void Disconnect()=0
void PrepareAll(const std::map< std::string, std::string > &queries)
Definition database.hxx:91
Prepared statement for databases.
Definition preparedSTMT.hxx:15
Contains classes and functions for database operations.