Example: ./basic_usage "host=localhost dbname=testdb user=testuser password=testpass"
#include <iostream>
#include <iomanip>
std::cout << "\n" << std::string(60, '=') << "\n";
std::cout << title << "\n";
std::cout << std::string(60, '=') << "\n\n";
}
std::cout << "Health Status:\n";
std::cout << " Overall: ";
case health_status::healthy:
std::cout << "ā
Healthy\n";
break;
case health_status::degraded:
std::cout << "ā ļø Degraded\n";
break;
case health_status::failed:
std::cout << "ā Failed\n";
break;
case health_status::critical:
std::cout << "š„ Critical\n";
break;
default:
std::cout << "ā Unknown\n";
}
std::cout <<
" Connected: " << (health.
is_connected ?
"Yes" :
"No") <<
"\n";
std::cout <<
" Logger: " << (health.
logger_healthy ?
"ā" :
"ā") <<
"\n";
std::cout <<
" Monitor: " << (health.
monitor_healthy ?
"ā" :
"ā") <<
"\n";
std::cout << " Pool Utilization: "
<< std::fixed << std::setprecision(1)
std::cout << "\n Issues:\n";
for (
const auto& issue : health.
issues) {
std::cout << " - " << issue << "\n";
}
}
}
std::cout << "Database Metrics:\n";
std::cout <<
" Total Queries: " << metrics.
total_queries <<
"\n";
std::cout << " Queries/sec: " << std::fixed << std::setprecision(2)
std::cout << " Avg Latency: " << std::fixed << std::setprecision(3)
std::cout <<
" Pool Size: " << metrics.
pool_size <<
"\n";
}
int main(
int argc,
char* argv[]) {
print_header(
"Unified Database System - Basic Usage Example");
std::cout << "Step 1: Creating database instance...\n";
auto db_result = unified_database_system::create_builder()
.enable_logging(db_log_level::info, "./logs")
.enable_monitoring(true)
.set_pool_size(2, 10)
.build();
if (db_result.is_err()) {
std::cerr << "Failed to create database instance: " << db_result.error().message << "\n";
return 1;
}
auto db = std::move(db_result.value());
std::cout << "ā
Database instance created\n";
auto health = db->check_health();
if (argc > 1) {
std::string conn_string = argv[1];
std::cout << "Connection string: " << conn_string << "\n";
auto connect_result = db->connect(conn_string);
if (connect_result.is_ok()) {
std::cout << "ā
Connected successfully\n";
std::cout << "ā
Query executed successfully\n";
std::cout <<
" Rows returned: " << result.
size() <<
"\n";
std::cout << " Affected rows: " << result.affected_rows << "\n";
if (!result.empty()) {
std::cout << "\n Result:\n";
for (size_t i = 0; i < result.size(); ++i) {
const auto& row = result[i];
std::cout << " Row " << (i + 1) << ": ";
for (const auto& [col, val] : row) {
std::cout << col << "=" << val << " ";
}
std::cout << "\n";
}
}
} else {
std::cout <<
"ā Query failed: " <<
query_result.error().message <<
"\n";
}
auto metrics = db->get_metrics();
health = db->check_health();
auto disconnect_result = db->disconnect();
if (disconnect_result.is_ok()) {
std::cout << "ā
Disconnected successfully\n";
}
} else {
std::cout << "ā Connection failed: " << connect_result.error().message << "\n";
std::cout << "\nNote: This is expected if PostgreSQL is not running.\n";
std::cout << "The example demonstrates the API even without a real database.\n";
}
} else {
std::cout << "\nā¹ļø No connection string provided.\n";
std::cout << " Usage: " << argv[0] << " [connection_string]\n";
std::cout << " Example: " << argv[0]
<< " \"host=localhost dbname=test user=test password=test\"\n";
std::cout << "\n The program will continue to demonstrate the API.\n";
}
auto metrics = db->get_metrics();
std::cout << "ā
All steps completed successfully!\n\n";
return 0;
}
void print_header(const std::string &title)
void print_metrics(const database_metrics &metrics)
void print_health_check(const health_check &health)
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)