93class database_coordinator;
99using row_data = std::map<std::string, std::string>;
229 static const std::string empty_string;
230 return value.has_value() ? *
value : empty_string;
255 virtual kcenon::common::Result<query_result>
execute(
256 const std::string& query,
257 const std::vector<query_param>& params = {}) = 0;
263 virtual kcenon::common::VoidResult
commit() = 0;
343 kcenon::common::Result<std::unique_ptr<unified_database_system>>
build();
431 const std::
string& query,
446 kcenon::common::Result<query_result>
select(
447 const std::string& query,
448 const std::vector<query_param>& params = {});
462 kcenon::common::Result<size_t>
insert(
463 const std::string& query,
464 const std::vector<query_param>& params = {});
478 kcenon::common::Result<size_t>
update(
479 const std::string& query,
480 const std::vector<query_param>& params = {});
494 kcenon::common::Result<size_t>
remove(
495 const std::string& query,
496 const std::vector<query_param>& params = {});
511 std::future<kcenon::common::Result<query_result>>
execute_async(
512 const std::string& query,
513 const std::vector<query_param>& params = {});
523 const std::string& query,
525 const std::vector<query_param>& params = {});
551 const std::vector<std::string>& queries);
565 template<
typename Func>
566 kcenon::common::Result<typename std::invoke_result_t<Func, transaction&>>
in_transaction(Func&& func);
648 return std::make_unique<unified_database_system>();
657inline kcenon::common::Result<std::unique_ptr<unified_database_system>>
create_database(
659 const std::string& connection_string) {
Transaction interface for ACID operations.
virtual kcenon::common::Result< query_result > execute(const std::string &query, const std::vector< query_param > ¶ms={})=0
Execute a query within the transaction.
virtual kcenon::common::VoidResult commit()=0
Commit the transaction.
virtual kcenon::common::VoidResult rollback()=0
Rollback the transaction.
virtual ~transaction()=default
virtual bool is_active() const =0
Check if transaction is active.
Builder class for custom configuration.
builder & enable_monitoring(bool enable=true)
Enable monitoring and metrics collection.
builder & set_connection_string(const std::string &conn_str)
Set the connection string.
builder & set_pool_size(size_t min_size, size_t max_size)
Set connection pool size.
unified_db_config config_
builder & enable_async(size_t worker_threads=4)
Enable async operations.
std::string connection_string_
builder & set_slow_query_threshold(std::chrono::milliseconds threshold)
Set slow query threshold.
kcenon::common::Result< std::unique_ptr< unified_database_system > > build()
Build and return the configured database system.
builder & enable_logging(db_log_level level, const std::string &log_dir="./logs")
Enable logging.
builder & set_backend(backend_type type)
Set the database backend type.
Main unified database system class.
const unified_db_config & get_config() const
Get current configuration.
unified_database_system(const unified_database_system &)=delete
~unified_database_system()
Destructor - automatically disconnects and cleans up.
kcenon::common::Result< std::unique_ptr< transaction > > begin_transaction()
kcenon::common::Result< typename std::invoke_result_t< Func, transaction & > > in_transaction(Func &&func)
std::unique_ptr< impl > pimpl_
std::future< kcenon::common::Result< query_result > > execute_async(const std::string &query, const std::vector< query_param > ¶ms={})
void reset_metrics()
Reset metrics counters.
backend_type get_backend_type() const
Get database backend type.
database_metrics get_metrics() const
Get current performance metrics.
kcenon::common::Result< size_t > update(const std::string &query, const std::vector< query_param > ¶ms={})
Execute an UPDATE query.
kcenon::common::Result< query_result > execute(const std::string &query, const std::vector< query_param > ¶ms={})
health_check check_health() const
Perform health check.
kcenon::common::VoidResult execute_transaction(const std::vector< std::string > &queries)
Execute multiple queries in a transaction.
kcenon::common::VoidResult connect(const std::string &connection_string)
Connect to database.
static builder create_builder()
Create a builder for custom configuration.
kcenon::common::Result< size_t > insert(const std::string &query, const std::vector< query_param > ¶ms={})
Execute an INSERT query.
kcenon::common::Result< query_result > select(const std::string &query, const std::vector< query_param > ¶ms={})
Execute a SELECT query.
kcenon::common::Result< size_t > remove(const std::string &query, const std::vector< query_param > ¶ms={})
Execute a DELETE query.
unified_database_system()
Default constructor (zero-config)
pool_stats get_pool_stats() const
kcenon::common::VoidResult disconnect()
Disconnect from database.
query_builder create_query_builder() const
std::future< kcenon::common::Result< query_result > > execute_async_priority(const std::string &query, int priority, const std::vector< query_param > ¶ms={})
Execute a SQL query asynchronously with priority.
unified_database_system & operator=(const unified_database_system &)=delete
unified_database_system(unified_database_system &&) noexcept
bool is_connected() const
Check if connected to database.
Universal query builder that adapts to different database types.
Unified configuration for integrated database system.
db_log_level
Database logging level enumeration.
@ critical
Critical failures requiring immediate attention.
std::unique_ptr< unified_database_system > create_database()
Create a database with zero configuration.
std::map< std::string, std::string > row_data
Database row representation.
health_status
Database health status.
backend_type
Database backend type enumeration.
kcenon::common::Result< T > Result
Primary Result type - use this for all database operations.
kcenon::common::VoidResult VoidResult
Primary VoidResult type - use this for void operations.
constexpr const char * to_string(database_types type) noexcept
Converts database_types enum to string representation.
Result<T> type for database_system error handling.
Database performance metrics.
std::chrono::microseconds max_latency
size_t successful_queries
size_t active_connections
size_t transactions_committed
size_t transactions_started
std::chrono::microseconds min_latency
size_t transactions_rolled_back
std::chrono::microseconds p99_latency
double queries_per_second
std::chrono::microseconds p95_latency
std::chrono::microseconds average_latency
std::chrono::steady_clock::time_point measurement_start
bool connection_pool_healthy
double connection_pool_utilization
std::vector< std::string > issues
std::chrono::steady_clock::time_point last_check
query_param(std::string &&v)
std::string to_sql_string() const
Get the value for SQL generation.
query_param(std::nullptr_t)
query_param(unsigned long v)
bool is_null() const noexcept
Check if this parameter represents a NULL value.
std::optional< std::string > value
query_param(unsigned long long v)
const std::string & get_value() const noexcept
Get the string value (returns empty string for null)
query_param(const std::string &v)
query_param(const char *v)
query_param(unsigned int v)
const row_data & operator[](size_t index) const
std::chrono::microseconds execution_time
row_data & operator[](size_t index)
std::vector< row_data > rows
Get connection pool statistics.
double utilization_percent
size_t active_connections