relx 0.1.0
A Modern C++23 Type-Safe SQL Query Builder
Loading...
Searching...
No Matches
relx::connection::Connection Class Referenceabstract

Abstract base class for database connections. More...

#include <relx/connection/connection.hpp>

Inheritance diagram for relx::connection::Connection:
relx::connection::PostgreSQLConnection

Public Member Functions

virtual ~Connection ()=default
 Virtual destructor.
 
virtual ConnectionResult< void > connect ()=0
 Connect to the database.
 
virtual ConnectionResult< void > disconnect ()=0
 Disconnect from the database.
 
virtual ConnectionResult< result::ResultSetexecute_raw (const std::string &sql, const std::vector< std::string > &params={})=0
 Execute a raw SQL query with parameters.
 
template<query::SqlExpr Query>
ConnectionResult< result::ResultSetexecute (const Query &query)
 Execute a query expression.
 
template<typename T , query::SqlExpr Query>
ConnectionResult< T > execute (const Query &query)
 Execute a query and map results to a user-defined type using Boost.PFR.
 
template<typename T , query::SqlExpr Query>
ConnectionResult< std::vector< T > > execute_many (const Query &query)
 Execute a query and map results to a vector of user-defined types.
 
virtual bool is_connected () const =0
 Check if the connection is open.
 
virtual ConnectionResult< void > begin_transaction (IsolationLevel isolation_level=IsolationLevel::ReadCommitted)=0
 Begin a new transaction.
 
virtual ConnectionResult< void > commit_transaction ()=0
 Commit the current transaction.
 
virtual ConnectionResult< void > rollback_transaction ()=0
 Rollback the current transaction.
 
virtual bool in_transaction () const =0
 Check if a transaction is currently active.
 

Detailed Description

Abstract base class for database connections.

Definition at line 102 of file connection.hpp.

Constructor & Destructor Documentation

◆ ~Connection()

virtual relx::connection::Connection::~Connection ( )
virtualdefault

Virtual destructor.

Member Function Documentation

◆ begin_transaction()

virtual ConnectionResult< void > relx::connection::Connection::begin_transaction ( IsolationLevel  isolation_level = IsolationLevel::ReadCommitted)
pure virtual

Begin a new transaction.

Parameters
isolation_levelThe isolation level for the transaction
Returns
Result indicating success or failure

Implemented in relx::connection::PostgreSQLConnection.

◆ commit_transaction()

virtual ConnectionResult< void > relx::connection::Connection::commit_transaction ( )
pure virtual

Commit the current transaction.

Returns
Result indicating success or failure

Implemented in relx::connection::PostgreSQLConnection.

◆ connect()

virtual ConnectionResult< void > relx::connection::Connection::connect ( )
pure virtual

Connect to the database.

Returns
Result indicating success or failure

Implemented in relx::connection::PostgreSQLConnection.

◆ disconnect()

virtual ConnectionResult< void > relx::connection::Connection::disconnect ( )
pure virtual

Disconnect from the database.

Returns
Result indicating success or failure

Implemented in relx::connection::PostgreSQLConnection.

◆ execute() [1/2]

template<query::SqlExpr Query>
ConnectionResult< result::ResultSet > relx::connection::Connection::execute ( const Query &  query)
inline

Execute a query expression.

Parameters
queryThe query expression to execute
Returns
Result containing the query results or an error

Definition at line 128 of file connection.hpp.

◆ execute() [2/2]

template<typename T , query::SqlExpr Query>
ConnectionResult< T > relx::connection::Connection::execute ( const Query &  query)
inline

Execute a query and map results to a user-defined type using Boost.PFR.

Note
The struct must be an aggregate type (has no virtual functions or private members)
The struct should have public members in the same order as the columns in the result set
Template Parameters
TThe user-defined type to map results to
QueryThe query expression type
Parameters
queryThe query expression to execute
Returns
Result containing the mapped user-defined type or an error

Definition at line 143 of file connection.hpp.

◆ execute_many()

template<typename T , query::SqlExpr Query>
ConnectionResult< std::vector< T > > relx::connection::Connection::execute_many ( const Query &  query)
inline

Execute a query and map results to a vector of user-defined types.

Template Parameters
TThe user-defined type to map results to
QueryThe query expression type
Parameters
queryThe query expression to execute
Returns
Result containing a vector of mapped user-defined types or an error

Definition at line 211 of file connection.hpp.

◆ execute_raw()

virtual ConnectionResult< result::ResultSet > relx::connection::Connection::execute_raw ( const std::string &  sql,
const std::vector< std::string > &  params = {} 
)
pure virtual

Execute a raw SQL query with parameters.

Parameters
sqlThe SQL query string
paramsVector of parameter values
Returns
Result containing the query results or an error

Implemented in relx::connection::PostgreSQLConnection.

◆ in_transaction()

virtual bool relx::connection::Connection::in_transaction ( ) const
pure virtual

Check if a transaction is currently active.

Returns
True if a transaction is active, false otherwise

Implemented in relx::connection::PostgreSQLConnection.

◆ is_connected()

virtual bool relx::connection::Connection::is_connected ( ) const
pure virtual

Check if the connection is open.

Returns
True if connected, false otherwise

Implemented in relx::connection::PostgreSQLConnection.

◆ rollback_transaction()

virtual ConnectionResult< void > relx::connection::Connection::rollback_transaction ( )
pure virtual

Rollback the current transaction.

Returns
Result indicating success or failure

Implemented in relx::connection::PostgreSQLConnection.


The documentation for this class was generated from the following file: