Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
database::integrated::unified_database_system Class Reference

Main unified database system class. More...

#include <unified_database_system.h>

Collaboration diagram for database::integrated::unified_database_system:
Collaboration graph

Classes

class  builder
 Builder class for custom configuration. More...
 
class  impl
 
struct  pool_stats
 Get connection pool statistics. More...
 

Public Member Functions

 unified_database_system ()
 Default constructor (zero-config)
 
 unified_database_system (const unified_db_config &config)
 Construct with configuration.
 
 ~unified_database_system ()
 Destructor - automatically disconnects and cleans up.
 
 unified_database_system (const unified_database_system &)=delete
 
unified_database_systemoperator= (const unified_database_system &)=delete
 
 unified_database_system (unified_database_system &&) noexcept
 
unified_database_systemoperator= (unified_database_system &&) noexcept
 
kcenon::common::VoidResult connect (const std::string &connection_string)
 Connect to database.
 
kcenon::common::VoidResult connect (backend_type backend, const std::string &connection_string)
 Connect to database with specific backend.
 
kcenon::common::VoidResult disconnect ()
 Disconnect from database.
 
bool is_connected () const
 Check if connected to database.
 
kcenon::common::Result< query_resultexecute (const std::string &query, const std::vector< query_param > &params={})
 
kcenon::common::Result< query_resultselect (const std::string &query, const std::vector< query_param > &params={})
 Execute a SELECT query.
 
kcenon::common::Result< size_t > insert (const std::string &query, const std::vector< query_param > &params={})
 Execute an INSERT query.
 
kcenon::common::Result< size_t > update (const std::string &query, const std::vector< query_param > &params={})
 Execute an UPDATE query.
 
kcenon::common::Result< size_t > remove (const std::string &query, const std::vector< query_param > &params={})
 Execute a DELETE query.
 
std::future< kcenon::common::Result< query_result > > execute_async (const std::string &query, const std::vector< query_param > &params={})
 
std::future< kcenon::common::Result< query_result > > execute_async_priority (const std::string &query, int priority, const std::vector< query_param > &params={})
 Execute a SQL query asynchronously with priority.
 
kcenon::common::Result< std::unique_ptr< transaction > > begin_transaction ()
 
kcenon::common::VoidResult execute_transaction (const std::vector< std::string > &queries)
 Execute multiple queries in a transaction.
 
template<typename Func >
kcenon::common::Result< typename std::invoke_result_t< Func, transaction & > > in_transaction (Func &&func)
 
query_builder create_query_builder () const
 
database_metrics get_metrics () const
 Get current performance metrics.
 
health_check check_health () const
 Perform health check.
 
void reset_metrics ()
 Reset metrics counters.
 
const unified_db_configget_config () const
 Get current configuration.
 
backend_type get_backend_type () const
 Get database backend type.
 
pool_stats get_pool_stats () const
 

Static Public Member Functions

static builder create_builder ()
 Create a builder for custom configuration.
 

Private Attributes

std::unique_ptr< implpimpl_
 

Detailed Description

Main unified database system class.

This class provides a simple, modern API for database operations with integrated logging, monitoring, and async capabilities.

Thread Safety: All methods are thread-safe Exception Safety: No-throw guarantee (all errors returned via Result) Resource Safety: RAII - resources cleaned up in destructor

Examples
integrated/async_queries.cpp, and integrated/monitoring.cpp.

Definition at line 288 of file unified_database_system.h.

Constructor & Destructor Documentation

◆ unified_database_system() [1/4]

database::integrated::unified_database_system::unified_database_system ( )

Default constructor (zero-config)

Creates a database system with smart defaults:

  • No backend specified (must call connect)
  • Connection pool: min=2, max=10
  • Logging: info level, console + file
  • Monitoring: enabled
  • Async: 4 worker threads
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 690 of file unified_database_system.cpp.

691 : unified_database_system(unified_db_config{}) {
692}
unified_database_system()
Default constructor (zero-config)

◆ unified_database_system() [2/4]

database::integrated::unified_database_system::unified_database_system ( const unified_db_config & config)
explicit

Construct with configuration.

Parameters
configDatabase configuration

Definition at line 694 of file unified_database_system.cpp.

695 : pimpl_(std::make_unique<impl>(config)) {
696}

◆ ~unified_database_system()

database::integrated::unified_database_system::~unified_database_system ( )
default

Destructor - automatically disconnects and cleans up.

Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

◆ unified_database_system() [3/4]

database::integrated::unified_database_system::unified_database_system ( const unified_database_system & )
delete

◆ unified_database_system() [4/4]

database::integrated::unified_database_system::unified_database_system ( unified_database_system && )
defaultnoexcept

Member Function Documentation

◆ begin_transaction()

kcenon::common::Result< std::unique_ptr< transaction > > database::integrated::unified_database_system::begin_transaction ( )

◆ check_health()

health_check database::integrated::unified_database_system::check_health ( ) const

Perform health check.

Returns
Health check results
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h, and integrated/monitoring.cpp.

Definition at line 799 of file unified_database_system.cpp.

799 {
800 return pimpl_->check_health();
801}

References pimpl_.

Referenced by example_alerting(), example_health_monitoring(), test_health_check_api(), and test_thread_safety_health_checks().

Here is the caller graph for this function:

◆ connect() [1/2]

kcenon::common::VoidResult database::integrated::unified_database_system::connect ( backend_type backend,
const std::string & connection_string )

Connect to database with specific backend.

Parameters
backendDatabase backend type
connection_stringDatabase connection string
Returns
Success or error result

Definition at line 709 of file unified_database_system.cpp.

711 {
712 return pimpl_->connect(backend, connection_string);
713}

References pimpl_.

◆ connect() [2/2]

kcenon::common::VoidResult database::integrated::unified_database_system::connect ( const std::string & connection_string)

Connect to database.

Parameters
connection_stringDatabase connection string (format depends on backend)
Returns
Success or error result

Examples:

  • PostgreSQL: "host=localhost port=5432 dbname=mydb user=user password=pass"
  • SQLite: "mydb.db" or ":memory:"
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h, integrated/async_queries.cpp, and integrated/monitoring.cpp.

Definition at line 705 of file unified_database_system.cpp.

705 {
706 return pimpl_->connect(backend_type::postgres, connection_string);
707}
@ postgres
PostgreSQL database.

References connect(), and database::integrated::postgres.

Referenced by connect(), test_begin_transaction_success(), test_connect_mock_backend(), test_connect_typed_backend(), test_connect_unsupported_backend(), test_execute_success(), test_execute_transaction_success(), test_get_pool_stats(), test_insert_success(), test_metrics_update_on_query(), test_remove_success(), test_reset_metrics(), test_select_success(), test_transaction_commit(), test_transaction_execute(), test_transaction_is_active(), test_transaction_metrics(), test_transaction_raii_cleanup(), test_transaction_rollback(), and test_update_success().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_builder()

unified_database_system::builder database::integrated::unified_database_system::create_builder ( )
static

Create a builder for custom configuration.

Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 913 of file unified_database_system.cpp.

913 {
914 return builder{};
915}

Referenced by database::integrated::create_database(), main(), main(), test_builder_custom(), test_builder_default(), and test_move_semantics().

Here is the caller graph for this function:

◆ create_query_builder()

query_builder database::integrated::unified_database_system::create_query_builder ( ) const
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 823 of file unified_database_system.cpp.

823 {
824 return pimpl_->create_query_builder();
825}

References pimpl_.

Referenced by test_create_query_builder().

Here is the caller graph for this function:

◆ disconnect()

kcenon::common::VoidResult database::integrated::unified_database_system::disconnect ( )

Disconnect from database.

Returns
Success or error result
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h, integrated/async_queries.cpp, and integrated/monitoring.cpp.

Definition at line 715 of file unified_database_system.cpp.

715 {
716 return pimpl_->disconnect();
717}

References pimpl_.

Referenced by test_connect_mock_backend(), and test_connection_state_api().

Here is the caller graph for this function:

◆ execute()

kcenon::common::Result< query_result > database::integrated::unified_database_system::execute ( const std::string & query,
const std::vector< query_param > & params = {} )

◆ execute_async()

std::future< kcenon::common::Result< query_result > > database::integrated::unified_database_system::execute_async ( const std::string & query,
const std::vector< query_param > & params = {} )

◆ execute_async_priority()

std::future< kcenon::common::Result< query_result > > database::integrated::unified_database_system::execute_async_priority ( const std::string & query,
int priority,
const std::vector< query_param > & params = {} )

Execute a SQL query asynchronously with priority.

Parameters
querySQL query string
priorityTask priority (0=lowest, 100=highest)
paramsOptional query parameters
Returns
Future that will contain query results
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 775 of file unified_database_system.cpp.

778 {
779 return pimpl_->execute_async_priority(query, priority, params);
780}

References pimpl_.

◆ execute_transaction()

kcenon::common::VoidResult database::integrated::unified_database_system::execute_transaction ( const std::vector< std::string > & queries)

Execute multiple queries in a transaction.

Parameters
queriesList of queries to execute
Returns
Success if all queries succeed and transaction commits, error otherwise

This is a convenience method that automatically begins, executes, and commits/rollbacks.

Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 788 of file unified_database_system.cpp.

789 {
790 return pimpl_->execute_transaction(queries);
791}

References pimpl_.

Referenced by test_execute_transaction_failure(), and test_execute_transaction_success().

Here is the caller graph for this function:

◆ get_backend_type()

backend_type database::integrated::unified_database_system::get_backend_type ( ) const

Get database backend type.

Returns
Backend type
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 813 of file unified_database_system.cpp.

813 {
814 return pimpl_->get_backend_type();
815}

References pimpl_.

Referenced by test_get_backend_type().

Here is the caller graph for this function:

◆ get_config()

const unified_db_config & database::integrated::unified_database_system::get_config ( ) const

Get current configuration.

Returns
Database configuration
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 809 of file unified_database_system.cpp.

809 {
810 return pimpl_->get_config();
811}

References pimpl_.

Referenced by test_get_config().

Here is the caller graph for this function:

◆ get_metrics()

database_metrics database::integrated::unified_database_system::get_metrics ( ) const

◆ get_pool_stats()

unified_database_system::pool_stats database::integrated::unified_database_system::get_pool_stats ( ) const
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 817 of file unified_database_system.cpp.

817 {
818 return pimpl_->get_pool_stats();
819}

References pimpl_.

Referenced by test_get_pool_stats().

Here is the caller graph for this function:

◆ in_transaction()

template<typename Func >
kcenon::common::Result< typename std::invoke_result_t< Func, transaction & > > database::integrated::unified_database_system::in_transaction ( Func && func)

◆ insert()

kcenon::common::Result< size_t > database::integrated::unified_database_system::insert ( const std::string & query,
const std::vector< query_param > & params = {} )

Execute an INSERT query.

Parameters
querySQL INSERT statement
paramsOptional query parameters
Returns
Result containing number of inserted rows or error
Note
This is a convenience wrapper around execute() that extracts only the affected_rows count from the query_result. Use this method when you only need to know how many rows were inserted.
See also
execute() for the underlying implementation
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 737 of file unified_database_system.cpp.

739 {
740 auto result = pimpl_->execute(query, params);
741 if (result.is_ok()) {
742 return result.value().affected_rows;
743 }
744 return result.error();
745}

References pimpl_.

Referenced by test_insert_failure_not_connected(), and test_insert_success().

Here is the caller graph for this function:

◆ is_connected()

bool database::integrated::unified_database_system::is_connected ( ) const

Check if connected to database.

Returns
true if connected
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 719 of file unified_database_system.cpp.

719 {
720 return pimpl_->is_connected();
721}

References pimpl_.

Referenced by test_config_construction(), test_connect_mock_backend(), test_connect_typed_backend(), test_connect_unsupported_backend(), test_connection_state_api(), and test_zero_config_construction().

Here is the caller graph for this function:

◆ operator=() [1/2]

◆ operator=() [2/2]

unified_database_system & database::integrated::unified_database_system::operator= ( unified_database_system && )
defaultnoexcept

◆ remove()

kcenon::common::Result< size_t > database::integrated::unified_database_system::remove ( const std::string & query,
const std::vector< query_param > & params = {} )

Execute a DELETE query.

Parameters
querySQL DELETE statement
paramsOptional query parameters
Returns
Result containing number of deleted rows or error
Note
This is a convenience wrapper around execute() that extracts only the affected_rows count from the query_result. Use this method when you only need to know how many rows were deleted.
See also
execute() for the underlying implementation
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 757 of file unified_database_system.cpp.

759 {
760 auto result = pimpl_->execute(query, params);
761 if (result.is_ok()) {
762 return result.value().affected_rows;
763 }
764 return result.error();
765}

References pimpl_.

Referenced by test_remove_failure_not_connected(), and test_remove_success().

Here is the caller graph for this function:

◆ reset_metrics()

void database::integrated::unified_database_system::reset_metrics ( )

Reset metrics counters.

Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 803 of file unified_database_system.cpp.

803 {
804 pimpl_->reset_metrics();
805}

References pimpl_.

Referenced by test_metrics_update_on_query(), test_reset_metrics(), and test_transaction_metrics().

Here is the caller graph for this function:

◆ select()

kcenon::common::Result< query_result > database::integrated::unified_database_system::select ( const std::string & query,
const std::vector< query_param > & params = {} )

Execute a SELECT query.

Parameters
querySQL SELECT statement
paramsOptional query parameters
Returns
Result containing selected rows or error
Note
This is a convenience wrapper around execute() that returns the full query_result. Use this method when you need all columns and rows from a SELECT statement.
See also
execute() for the underlying implementation
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 731 of file unified_database_system.cpp.

733 {
734 return pimpl_->execute(query, params);
735}

References pimpl_.

Referenced by test_select_failure_not_connected(), and test_select_success().

Here is the caller graph for this function:

◆ update()

kcenon::common::Result< size_t > database::integrated::unified_database_system::update ( const std::string & query,
const std::vector< query_param > & params = {} )

Execute an UPDATE query.

Parameters
querySQL UPDATE statement
paramsOptional query parameters
Returns
Result containing number of updated rows or error
Note
This is a convenience wrapper around execute() that extracts only the affected_rows count from the query_result. Use this method when you only need to know how many rows were updated.
See also
execute() for the underlying implementation
Examples
/home/runner/work/database_system/database_system/database/integrated/unified_database_system.h.

Definition at line 747 of file unified_database_system.cpp.

749 {
750 auto result = pimpl_->execute(query, params);
751 if (result.is_ok()) {
752 return result.value().affected_rows;
753 }
754 return result.error();
755}

References pimpl_.

Referenced by test_update_failure_not_connected(), and test_update_success().

Here is the caller graph for this function:

Member Data Documentation

◆ pimpl_


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