Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
kcenon::common::interfaces::IDatabase Class Referenceabstractexport

Standard interface for database operations. More...

#include <database_interface.h>

Collaboration diagram for kcenon::common::interfaces::IDatabase:
Collaboration graph

Public Member Functions

virtual ~IDatabase ()=default
 
virtual VoidResult connect (const std::string &connection_string)=0
 Connect to database using connection string.
 
virtual VoidResult disconnect ()=0
 Disconnect from database.
 
virtual Result< database_resultexecute_query (const std::string &query)=0
 Execute a query and return results.
 
virtual VoidResult execute_command (const std::string &command)=0
 Execute a command without returning results.
 
virtual VoidResult begin_transaction ()=0
 Begin a database transaction.
 
virtual VoidResult commit ()=0
 Commit the current transaction.
 
virtual VoidResult rollback ()=0
 Rollback the current transaction.
 
virtual bool is_connected () const =0
 Check if database is currently connected.
 
virtual ~IDatabase ()=default
 

Detailed Description

Standard interface for database operations.

This interface provides a common abstraction for database connectivity and query execution, supporting transactions and connection management.

Thread Safety:

  • Implementation-specific; check concrete implementations
  • Generally, each connection should be used from a single thread or protected with appropriate synchronization
  • execute_query() and execute_command() should not be called concurrently on the same connection during a transaction

Example:

auto db = create_database();
auto conn_result = db->connect("host=localhost dbname=test");
if (conn_result.is_ok()) {
auto result = db->execute_query("SELECT * FROM users");
if (result.is_ok()) {
for (const auto& row : result.value()) {
// Process row
}
}
db->disconnect();
}

Definition at line 174 of file executor.cppm.

Constructor & Destructor Documentation

◆ ~IDatabase() [1/2]

virtual kcenon::common::interfaces::IDatabase::~IDatabase ( )
virtualdefault

◆ ~IDatabase() [2/2]

virtual kcenon::common::interfaces::IDatabase::~IDatabase ( )
exportvirtualdefault

Member Function Documentation

◆ begin_transaction()

virtual VoidResult kcenon::common::interfaces::IDatabase::begin_transaction ( )
pure virtual

Begin a database transaction.

Returns
VoidResult indicating success or error

◆ commit()

virtual VoidResult kcenon::common::interfaces::IDatabase::commit ( )
pure virtual

Commit the current transaction.

Returns
VoidResult indicating success or error

◆ connect()

virtual VoidResult kcenon::common::interfaces::IDatabase::connect ( const std::string & connection_string)
pure virtual

Connect to database using connection string.

Parameters
connection_stringDatabase-specific connection string
Returns
VoidResult indicating success or error

◆ disconnect()

virtual VoidResult kcenon::common::interfaces::IDatabase::disconnect ( )
pure virtual

Disconnect from database.

Returns
VoidResult indicating success or error

◆ execute_command()

virtual VoidResult kcenon::common::interfaces::IDatabase::execute_command ( const std::string & command)
pure virtual

Execute a command without returning results.

Parameters
commandSQL command string (INSERT, UPDATE, DELETE, etc.)
Returns
VoidResult indicating success or error

◆ execute_query()

virtual Result< database_result > kcenon::common::interfaces::IDatabase::execute_query ( const std::string & query)
pure virtual

Execute a query and return results.

Parameters
querySQL query string
Returns
Result containing query results or error

◆ is_connected()

virtual bool kcenon::common::interfaces::IDatabase::is_connected ( ) const
pure virtual

Check if database is currently connected.

Returns
true if connected, false otherwise

◆ rollback()

virtual VoidResult kcenon::common::interfaces::IDatabase::rollback ( )
pure virtual

Rollback the current transaction.

Returns
VoidResult indicating success or error

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