Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
migration_from_legacy.cpp File Reference

Migration guide from legacy database_manager API to unified_database_system. More...

#include "integrated/unified_database_system.h"
#include <iostream>
#include <iomanip>
Include dependency graph for migration_from_legacy.cpp:

Go to the source code of this file.

Functions

void print_header (const std::string &title)
 
void print_section (const std::string &title)
 
int main ()
 

Detailed Description

Migration guide from legacy database_manager API to unified_database_system.

Definition in file migration_from_legacy.cpp.

Function Documentation

◆ main()

int main ( )

Definition at line 32 of file migration_from_legacy.cpp.

32 {
33 print_header("Migration Guide: Legacy API to Integrated System");
34
35 std::cout << "This guide demonstrates the key improvements in the integrated\n";
36 std::cout << "database system compared to the legacy API.\n";
37
38 // ========================================
39 // Example 1: Basic Connection
40 // ========================================
41 print_section("1. Connection Setup");
42
43 std::cout << "LEGACY API:\n";
44 std::cout << " - Manual configuration required\n";
45 std::cout << " - Multiple initialization calls\n";
46 std::cout << " - Exception-based error handling\n\n";
47
48 std::cout << "INTEGRATED API:\n";
49 std::cout << " - Builder pattern with smart defaults\n";
50 std::cout << " - Single call initialization\n";
51 std::cout << " - Result<T> for explicit error handling\n\n";
52
53 std::cout << "Example:\n";
55 .enable_logging(db_log_level::info, "./logs")
57 .set_pool_size(2, 10)
58 .build();
59
60 std::unique_ptr<unified_database_system> db;
61 if (db_result.is_ok()) {
62 db = std::move(db_result.value());
63 std::cout << "Database instance created with integrated API\n";
64 }
65
66 // ========================================
67 // Example 2: Query Execution
68 // ========================================
69 print_section("2. Query Execution");
70
71 std::cout << "LEGACY API:\n";
72 std::cout << " - Exceptions for error handling\n";
73 std::cout << " - Empty result vs error ambiguity\n\n";
74
75 std::cout << "INTEGRATED API:\n";
76 std::cout << " - Result<T> makes success/failure explicit\n";
77 std::cout << " - Structured error information\n\n";
78
79 std::cout << "Example (without actual DB connection):\n";
80 auto result = db->execute("SELECT 1");
81
82 if (result.is_ok()) {
83 std::cout << "✅ Query succeeded\n";
84 } else {
85 std::cout << "❌ Query failed (expected without DB):\n";
86 std::cout << " Error: " << result.error().message << "\n";
87 }
88
89 // ========================================
90 // Example 3: Async Operations
91 // ========================================
92 print_section("3. Async Operations");
93
94 std::cout << "LEGACY API:\n";
95 std::cout << " - Manual thread management required\n";
96 std::cout << " - Complex exception handling\n\n";
97
98 std::cout << "INTEGRATED API:\n";
99 std::cout << " - Built-in async support\n";
100 std::cout << " - Thread pool managed automatically\n";
101 std::cout << " - Consistent Result<T> return type\n\n";
102
103 std::cout << "Example:\n";
104 std::cout << " auto future = db->execute_async(\"SELECT * FROM users\");\n";
105 std::cout << " // Do other work...\n";
106 std::cout << " auto result = future.get();\n\n";
107
108 // ========================================
109 // Example 4: Monitoring
110 // ========================================
111 print_section("4. Built-in Monitoring");
112
113 std::cout << "LEGACY API:\n";
114 std::cout << " - Manual instrumentation needed\n";
115 std::cout << " - External monitoring setup\n\n";
116
117 std::cout << "INTEGRATED API:\n";
118 std::cout << " - Built-in metrics collection\n";
119 std::cout << " - Health check API\n";
120 std::cout << " - Automatic slow query detection\n\n";
121
122 auto metrics = db->get_metrics();
123 std::cout << "Current Metrics:\n";
124 std::cout << " Total Queries: " << metrics.total_queries << "\n";
125 std::cout << " Pool Size: " << metrics.pool_size << "\n";
126 std::cout << " Queries/sec: " << std::fixed << std::setprecision(2)
127 << metrics.queries_per_second << "\n\n";
128
129 auto health = db->check_health();
130 std::cout << "Health Status: ";
131 switch (health.status) {
132 case health_status::healthy:
133 std::cout << "✅ Healthy\n";
134 break;
135 case health_status::degraded:
136 std::cout << "⚠️ Degraded\n";
137 break;
138 default:
139 std::cout << "❌ Unhealthy\n";
140 }
141
142 // ========================================
143 // Example 5: Configuration
144 // ========================================
145 print_section("5. Configuration");
146
147 std::cout << "LEGACY API:\n";
148 std::cout << " - Scattered configuration methods\n";
149 std::cout << " - Manual dependency wiring\n\n";
150
151 std::cout << "INTEGRATED API:\n";
152 std::cout << " - Unified builder pattern\n";
153 std::cout << " - Automatic dependency injection\n";
154 std::cout << " - Smart defaults reduce boilerplate\n\n";
155
156 std::cout << "Example:\n";
157 std::cout << " auto db = unified_database_system::create_builder()\n";
158 std::cout << " .set_connection_string(\"...\")\n";
159 std::cout << " .set_pool_size(5, 20)\n";
160 std::cout << " .enable_logging(db_log_level::info, \"./logs\")\n";
161 std::cout << " .enable_monitoring(true)\n";
162 std::cout << " .enable_async(8)\n";
163 std::cout << " .build();\n\n";
164
165 // ========================================
166 // Migration Strategy
167 // ========================================
168 print_section("6. Migration Strategy");
169
170 std::cout << "Gradual Migration Phases:\n\n";
171
172 std::cout << "PHASE 1 - Coexistence:\n";
173 std::cout << " ✓ Add integrated system alongside legacy code\n";
174 std::cout << " ✓ Both APIs work in the same application\n";
175 std::cout << " ✓ No breaking changes\n\n";
176
177 std::cout << "PHASE 2 - New Features:\n";
178 std::cout << " ✓ Use integrated API for all new development\n";
179 std::cout << " ✓ Team learns new API gradually\n";
180 std::cout << " ✓ Legacy code continues working\n\n";
181
182 std::cout << "PHASE 3 - High-Value Migration:\n";
183 std::cout << " ✓ Migrate code that benefits most from new features\n";
184 std::cout << " ✓ Focus on async, monitoring requirements first\n";
185 std::cout << " ✓ Measure performance improvements\n\n";
186
187 std::cout << "PHASE 4 - Complete Migration:\n";
188 std::cout << " ✓ Migrate remaining legacy code\n";
189 std::cout << " ✓ Remove legacy dependencies\n";
190 std::cout << " ✓ Full feature set available\n\n";
191
192 std::cout << "Estimated Timeline: 2-4 weeks for typical codebase\n\n";
193
194 // ========================================
195 // Key Benefits
196 // ========================================
197 print_section("7. Key Benefits");
198
199 std::cout << "✅ Improved:\n";
200 std::cout << " • Error handling - Explicit Result<T> instead of exceptions\n";
201 std::cout << " • Configuration - Builder pattern with smart defaults\n";
202 std::cout << " • Async support - Built-in, no manual thread management\n";
203 std::cout << " • Observability - Integrated logging and monitoring\n";
204 std::cout << " • Code clarity - More explicit and self-documenting\n\n";
205
206 std::cout << "🔧 New Features:\n";
207 std::cout << " • Health check API\n";
208 std::cout << " • Comprehensive metrics collection\n";
209 std::cout << " • Slow query detection\n";
210 std::cout << " • Zero-config defaults\n";
211 std::cout << " • Automatic resource management\n\n";
212
213 std::cout << "⚠️ Compatibility:\n";
214 std::cout << " • Query syntax unchanged\n";
215 std::cout << " • Connection strings same format\n";
216 std::cout << " • Transaction semantics preserved\n";
217 std::cout << " • Can coexist with legacy code\n\n";
218
219 // ========================================
220 // Resources
221 // ========================================
222 print_section("8. Additional Resources");
223
224 std::cout << "Documentation:\n";
225 std::cout << " • INTEGRATION.md - Complete integration guide\n";
226 std::cout << " • ARCHITECTURE.md - System architecture\n";
227 std::cout << " • samples/integrated/ - Working examples\n\n";
228
229 std::cout << "Examples:\n";
230 std::cout << " • basic_usage - Getting started\n";
231 std::cout << " • async_queries - Async operations\n";
232 std::cout << " • monitoring - Metrics and health checks\n\n";
233
234 print_header("Migration Guide Complete");
235
236 std::cout << "Key Takeaways:\n";
237 std::cout << " 1. New API is more explicit and safer\n";
238 std::cout << " 2. Migration can be gradual\n";
239 std::cout << " 3. Built-in observability saves development time\n";
240 std::cout << " 4. Better defaults reduce configuration burden\n";
241 std::cout << " 5. Improved async support simplifies concurrent code\n\n";
242
243 std::cout << "Ready to migrate? Start with Phase 1 (coexistence)!\n\n";
244
245 return 0;
246}
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_section(const std::string &title)
void print_header(const std::string &title)

References database::integrated::unified_database_system::builder::build(), database::integrated::unified_database_system::create_builder(), database::integrated::unified_database_system::builder::enable_logging(), database::integrated::unified_database_system::builder::enable_monitoring(), print_header(), print_section(), and database::integrated::unified_database_system::builder::set_pool_size().

Here is the call graph for this function:

◆ print_header()

void print_header ( const std::string & title)

Definition at line 21 of file migration_from_legacy.cpp.

21 {
22 std::cout << "\n" << std::string(70, '=') << "\n";
23 std::cout << title << "\n";
24 std::cout << std::string(70, '=') << "\n\n";
25}

Referenced by main().

Here is the caller graph for this function:

◆ print_section()

void print_section ( const std::string & title)
Examples
integrated/migration_from_legacy.cpp.

Definition at line 27 of file migration_from_legacy.cpp.

27 {
28 std::cout << "\n" << title << "\n";
29 std::cout << std::string(title.length(), '-') << "\n\n";
30}

Referenced by main().

Here is the caller graph for this function: