30 std::cout <<
"\n" << std::string(60,
'=') <<
"\n";
31 std::cout << title <<
"\n";
32 std::cout << std::string(60,
'=') <<
"\n\n";
36 std::cout <<
"Health Status:\n";
37 std::cout <<
" Overall: ";
40 case health_status::healthy:
41 std::cout <<
"ā
Healthy\n";
43 case health_status::degraded:
44 std::cout <<
"ā ļø Degraded\n";
46 case health_status::failed:
47 std::cout <<
"ā Failed\n";
49 case health_status::critical:
50 std::cout <<
"š„ Critical\n";
53 std::cout <<
"ā Unknown\n";
56 std::cout <<
" Connected: " << (health.
is_connected ?
"Yes" :
"No") <<
"\n";
57 std::cout <<
" Logger: " << (health.
logger_healthy ?
"ā" :
"ā") <<
"\n";
58 std::cout <<
" Monitor: " << (health.
monitor_healthy ?
"ā" :
"ā") <<
"\n";
60 std::cout <<
" Pool Utilization: "
61 << std::fixed << std::setprecision(1)
64 if (!health.
issues.empty()) {
65 std::cout <<
"\n Issues:\n";
66 for (
const auto& issue : health.
issues) {
67 std::cout <<
" - " << issue <<
"\n";
73 std::cout <<
"Database Metrics:\n";
74 std::cout <<
" Total Queries: " << metrics.
total_queries <<
"\n";
77 std::cout <<
" Queries/sec: " << std::fixed << std::setprecision(2)
79 std::cout <<
" Avg Latency: " << std::fixed << std::setprecision(3)
81 std::cout <<
" Pool Size: " << metrics.
pool_size <<
"\n";
86int main(
int argc,
char* argv[]) {
87 print_header(
"Unified Database System - Basic Usage Example");
90 std::cout <<
"Step 1: Creating database instance...\n";
98 if (db_result.is_err()) {
99 std::cerr <<
"Failed to create database instance: " << db_result.error().message <<
"\n";
102 auto db = std::move(db_result.value());
104 std::cout <<
"ā
Database instance created\n";
108 auto health = db->check_health();
115 std::string conn_string = argv[1];
116 std::cout <<
"Connection string: " << conn_string <<
"\n";
118 auto connect_result = db->connect(conn_string);
120 if (connect_result.is_ok()) {
121 std::cout <<
"ā
Connected successfully\n";
126 auto query_result = db->execute(
"SELECT 1 as test_column");
130 std::cout <<
"ā
Query executed successfully\n";
131 std::cout <<
" Rows returned: " << result.
size() <<
"\n";
132 std::cout <<
" Affected rows: " << result.affected_rows <<
"\n";
134 if (!result.empty()) {
135 std::cout <<
"\n Result:\n";
136 for (
size_t i = 0; i < result.size(); ++i) {
137 const auto& row = result[i];
138 std::cout <<
" Row " << (i + 1) <<
": ";
139 for (
const auto& [col, val] : row) {
140 std::cout << col <<
"=" << val <<
" ";
147 std::cout <<
"ā Query failed: " <<
query_result.error().message <<
"\n";
152 auto metrics = db->get_metrics();
157 health = db->check_health();
162 auto disconnect_result = db->disconnect();
163 if (disconnect_result.is_ok()) {
164 std::cout <<
"ā
Disconnected successfully\n";
168 std::cout <<
"ā Connection failed: " << connect_result.error().message <<
"\n";
169 std::cout <<
"\nNote: This is expected if PostgreSQL is not running.\n";
170 std::cout <<
"The example demonstrates the API even without a real database.\n";
174 std::cout <<
"\nā¹ļø No connection string provided.\n";
175 std::cout <<
" Usage: " << argv[0] <<
" [connection_string]\n";
176 std::cout <<
" Example: " << argv[0]
177 <<
" \"host=localhost dbname=test user=test password=test\"\n";
178 std::cout <<
"\n The program will continue to demonstrate the API.\n";
183 auto metrics = db->get_metrics();
187 std::cout <<
"ā
All steps completed successfully!\n\n";
builder & enable_monitoring(bool enable=true)
Enable monitoring and metrics collection.
builder & set_pool_size(size_t min_size, size_t max_size)
Set connection pool size.
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.
static builder create_builder()
Create a builder for custom configuration.
void print_metrics(const database_metrics &metrics)
void print_health_check(const health_check &health)
void print_header(const std::string &title)
Database performance metrics.
size_t successful_queries
size_t active_connections
double queries_per_second
std::chrono::microseconds average_latency
double connection_pool_utilization
std::vector< std::string > issues
Zero-configuration database system with integrated adapters (Phase 6)