@@ -112,13 +112,10 @@ pub async fn handle_database_command(
112112 DatabaseCommands :: Show { id } => {
113113 // Parse subscription_id:database_id format or just database_id
114114 let ( subscription_id, database_id) = parse_database_id ( & id) ?;
115- let database = client
116- . get_raw ( & format ! (
117- "/subscriptions/{}/databases/{}" ,
118- subscription_id, database_id
119- ) )
120- . await ?;
121- print_output ( database, output_format, query) ?;
115+ let handler = redis_cloud:: CloudDatabaseHandler :: new ( client. clone ( ) ) ;
116+ let database = handler. get ( subscription_id, database_id) . await ?;
117+ let value = serde_json:: to_value ( database) ?;
118+ print_output ( value, output_format, query) ?;
122119 }
123120 DatabaseCommands :: Create {
124121 name : _,
@@ -231,12 +228,16 @@ pub async fn handle_subscription_command(
231228
232229 match command {
233230 SubscriptionCommands :: List => {
234- let subscriptions = client. get_raw ( "/subscriptions" ) . await ?;
235- print_output ( subscriptions, output_format, query) ?;
231+ let handler = redis_cloud:: CloudSubscriptionHandler :: new ( client. clone ( ) ) ;
232+ let subscriptions = handler. list ( ) . await ?;
233+ let value = serde_json:: to_value ( subscriptions) ?;
234+ print_output ( value, output_format, query) ?;
236235 }
237236 SubscriptionCommands :: Show { id } => {
238- let subscription = client. get_raw ( & format ! ( "/subscriptions/{}" , id) ) . await ?;
239- print_output ( subscription, output_format, query) ?;
237+ let handler = redis_cloud:: CloudSubscriptionHandler :: new ( client. clone ( ) ) ;
238+ let subscription = handler. get ( id. parse ( ) ?) . await ?;
239+ let value = serde_json:: to_value ( subscription) ?;
240+ print_output ( value, output_format, query) ?;
240241 }
241242 SubscriptionCommands :: Create {
242243 name,
@@ -321,27 +322,34 @@ pub async fn handle_account_command(
321322
322323 match command {
323324 AccountCommands :: List => {
325+ // Note: /accounts endpoint doesn't exist in CloudAccountHandler
324326 let accounts = client. get_raw ( "/accounts" ) . await ?;
325327 print_output ( accounts, output_format, query) ?;
326328 }
327329 AccountCommands :: Show { id } => {
330+ // Note: /accounts/{id} endpoint doesn't exist in CloudAccountHandler
328331 let account = client. get_raw ( & format ! ( "/accounts/{}" , id) ) . await ?;
329332 print_output ( account, output_format, query) ?;
330333 }
331334 AccountCommands :: Info => {
332- let account_info = client. get_raw ( "/accounts/info" ) . await ?;
333- print_output ( account_info, output_format, query) ?;
335+ let handler = redis_cloud:: CloudAccountHandler :: new ( client. clone ( ) ) ;
336+ let account_info = handler. info ( ) . await ?;
337+ let value = serde_json:: to_value ( account_info) ?;
338+ print_output ( value, output_format, query) ?;
334339 }
335340 AccountCommands :: Owner => {
336- let owner = client. get_raw ( "/accounts/owner" ) . await ?;
341+ let handler = redis_cloud:: CloudAccountHandler :: new ( client. clone ( ) ) ;
342+ let owner = handler. owner ( ) . await ?;
337343 print_output ( owner, output_format, query) ?;
338344 }
339345 AccountCommands :: Users => {
340- let users = client. get_raw ( "/accounts/users" ) . await ?;
346+ let handler = redis_cloud:: CloudAccountHandler :: new ( client. clone ( ) ) ;
347+ let users = handler. users ( ) . await ?;
341348 print_output ( users, output_format, query) ?;
342349 }
343350 AccountCommands :: PaymentMethods => {
344- let payment_methods = client. get_raw ( "/accounts/payment-methods" ) . await ?;
351+ let handler = redis_cloud:: CloudAccountHandler :: new ( client. clone ( ) ) ;
352+ let payment_methods = handler. get_payment_methods ( ) . await ?;
345353 print_output ( payment_methods, output_format, query) ?;
346354 }
347355 }
@@ -359,12 +367,16 @@ pub async fn handle_user_command(
359367
360368 match command {
361369 UserCommands :: List => {
362- let users = client. get_raw ( "/users" ) . await ?;
363- print_output ( users, output_format, query) ?;
370+ let handler = redis_cloud:: CloudUsersHandler :: new ( client. clone ( ) ) ;
371+ let users = handler. list ( ) . await ?;
372+ let value = serde_json:: to_value ( users) ?;
373+ print_output ( value, output_format, query) ?;
364374 }
365375 UserCommands :: Show { id } => {
366- let user = client. get_raw ( & format ! ( "/users/{}" , id) ) . await ?;
367- print_output ( user, output_format, query) ?;
376+ let handler = redis_cloud:: CloudUsersHandler :: new ( client. clone ( ) ) ;
377+ let user = handler. get ( id. parse ( ) ?) . await ?;
378+ let value = serde_json:: to_value ( user) ?;
379+ print_output ( value, output_format, query) ?;
368380 }
369381 UserCommands :: Create {
370382 name,
@@ -440,6 +452,8 @@ pub async fn handle_region_command(
440452
441453 match command {
442454 RegionCommands :: List => {
455+ // Note: CloudRegionHandler list() requires a provider parameter
456+ // Using raw API for now
443457 let regions = client. get_raw ( "/regions" ) . await ?;
444458 print_output ( regions, output_format, query) ?;
445459 }
@@ -458,12 +472,16 @@ pub async fn handle_task_command(
458472
459473 match command {
460474 TaskCommands :: List => {
461- let tasks = client. get_raw ( "/tasks" ) . await ?;
462- print_output ( tasks, output_format, query) ?;
475+ let handler = redis_cloud:: CloudTasksHandler :: new ( client. clone ( ) ) ;
476+ let tasks = handler. list ( ) . await ?;
477+ let value = serde_json:: to_value ( tasks) ?;
478+ print_output ( value, output_format, query) ?;
463479 }
464480 TaskCommands :: Show { id } => {
465- let task = client. get_raw ( & format ! ( "/tasks/{}" , id) ) . await ?;
466- print_output ( task, output_format, query) ?;
481+ let handler = redis_cloud:: CloudTasksHandler :: new ( client. clone ( ) ) ;
482+ let task = handler. get ( & id) . await ?;
483+ let value = serde_json:: to_value ( task) ?;
484+ print_output ( value, output_format, query) ?;
467485 }
468486 TaskCommands :: Wait { id, timeout } => {
469487 use std:: time:: { Duration , Instant } ;
@@ -1144,8 +1162,10 @@ pub async fn handle_cloud_account_command(
11441162
11451163 match command {
11461164 CloudAccountCommands :: List => {
1147- let accounts = client. get_raw ( "/cloud-accounts" ) . await ?;
1148- print_output ( accounts, output_format, query) ?;
1165+ let handler = redis_cloud:: CloudAccountsHandler :: new ( client. clone ( ) ) ;
1166+ let accounts = handler. list ( ) . await ?;
1167+ let value = serde_json:: to_value ( accounts) ?;
1168+ print_output ( value, output_format, query) ?;
11491169 }
11501170 CloudAccountCommands :: Show { account_id } => {
11511171 let account = client
0 commit comments