@@ -18,7 +18,7 @@ use serde_json::{json, Map, Value};
1818use service_utils:: helpers:: extract_dimensions;
1919#[ cfg( feature = "high-performance-mode" ) ]
2020use service_utils:: service:: types:: { AppHeader , AppState } ;
21- use service_utils:: service:: types:: { DbConnection , SchemaName , WorkspaceContext } ;
21+ use service_utils:: service:: types:: { DbConnection , WorkspaceContext } ;
2222use superposition_derives:: authorized;
2323#[ cfg( feature = "high-performance-mode" ) ]
2424use superposition_macros:: response_error;
@@ -35,7 +35,7 @@ use superposition_types::{
3535 database:: {
3636 models:: {
3737 cac:: { ConfigVersion , ConfigVersionListItem } ,
38- ChangeReason , Workspace ,
38+ ChangeReason ,
3939 } ,
4040 schema:: config_versions:: dsl as config_versions,
4141 } ,
@@ -294,8 +294,7 @@ async fn reduce_config_key(
294294 dimension_schema_map : & HashMap < String , DimensionInfo > ,
295295 default_config : Map < String , Value > ,
296296 is_approve : bool ,
297- schema_name : & SchemaName ,
298- workspace_settings : & Workspace ,
297+ workspace_request : & WorkspaceContext ,
299298) -> superposition:: Result < Config > {
300299 let default_config_val =
301300 default_config
@@ -356,12 +355,22 @@ async fn reduce_config_key(
356355 ) => {
357356 if * to_be_deleted {
358357 if is_approve {
359- let _ = context:: delete ( cid. clone ( ) , user, conn, schema_name) ;
358+ let _ = context:: delete (
359+ cid. clone ( ) ,
360+ user,
361+ conn,
362+ & workspace_request. schema_name ,
363+ ) ;
360364 }
361365 og_contexts. retain ( |x| x. id != * cid) ;
362366 } else {
363367 if is_approve {
364- let _ = context:: delete ( cid. clone ( ) , user, conn, schema_name) ;
368+ let _ = context:: delete (
369+ cid. clone ( ) ,
370+ user,
371+ conn,
372+ & workspace_request. schema_name ,
373+ ) ;
365374 if let Ok ( put_req) = construct_new_payload ( request_payload) {
366375 let description = match put_req. description . clone ( ) {
367376 Some ( val) => val,
@@ -370,7 +379,7 @@ async fn reduce_config_key(
370379 put_req. context . clone ( ) . into_inner ( ) . into ( ) ,
371380 ) ,
372381 conn,
373- schema_name,
382+ & workspace_request . schema_name ,
374383 ) ?,
375384 } ;
376385
@@ -380,8 +389,7 @@ async fn reduce_config_key(
380389 conn,
381390 false ,
382391 user,
383- schema_name,
384- workspace_settings,
392+ workspace_request,
385393 false ,
386394 ) ;
387395 }
@@ -436,11 +444,10 @@ async fn reduce_config_key(
436444#[ authorized]
437445#[ put( "/reduce" ) ]
438446async fn reduce_handler (
447+ workspace_request : WorkspaceContext ,
439448 req : HttpRequest ,
440- workspace_settings : Workspace ,
441449 user : User ,
442450 db_conn : DbConnection ,
443- schema_name : SchemaName ,
444451) -> superposition:: Result < HttpResponse > {
445452 let DbConnection ( mut conn) = db_conn;
446453 let is_approve = req
@@ -449,8 +456,9 @@ async fn reduce_handler(
449456 . and_then ( |value| value. to_str ( ) . ok ( ) . and_then ( |s| s. parse :: < bool > ( ) . ok ( ) ) )
450457 . unwrap_or ( false ) ;
451458
452- let dimensions_info_map = fetch_dimensions_info_map ( & mut conn, & schema_name) ?;
453- let mut config = generate_cac ( & mut conn, & schema_name) ?;
459+ let dimensions_info_map =
460+ fetch_dimensions_info_map ( & mut conn, & workspace_request. schema_name ) ?;
461+ let mut config = generate_cac ( & mut conn, & workspace_request. schema_name ) ?;
454462 let default_config = ( config. default_configs ) . clone ( ) ;
455463 for ( key, _) in default_config {
456464 let contexts = config. contexts ;
@@ -465,12 +473,11 @@ async fn reduce_handler(
465473 & dimensions_info_map,
466474 default_config. clone ( ) ,
467475 is_approve,
468- & schema_name,
469- & workspace_settings,
476+ & workspace_request,
470477 )
471478 . await ?;
472479 if is_approve {
473- config = generate_cac ( & mut conn, & schema_name) ?;
480+ config = generate_cac ( & mut conn, & workspace_request . schema_name ) ?;
474481 }
475482 }
476483
@@ -480,10 +487,7 @@ async fn reduce_handler(
480487#[ cfg( feature = "high-performance-mode" ) ]
481488#[ authorized]
482489#[ get( "/fast" ) ]
483- async fn get_fast_handler (
484- schema_name : SchemaName ,
485- state : Data < AppState > ,
486- ) -> superposition:: Result < HttpResponse > {
490+ async fn get_fast_handler ( state : Data < AppState > ) -> superposition:: Result < HttpResponse > {
487491 use fred:: interfaces:: MetricsInterface ;
488492
489493 log:: debug!( "Started redis fetch" ) ;
@@ -577,11 +581,11 @@ async fn get_handler(
577581 db_conn : DbConnection ,
578582 dimension_params : DimensionQuery < QueryMap > ,
579583 query_filters : superposition_query:: Query < ConfigQuery > ,
580- workspace_context : WorkspaceContext ,
584+ workspace_request : WorkspaceContext ,
581585) -> superposition:: Result < HttpResponse > {
582586 let DbConnection ( mut conn) = db_conn;
583587
584- let max_created_at = get_max_created_at ( & mut conn, & workspace_context . schema_name )
588+ let max_created_at = get_max_created_at ( & mut conn, & workspace_request . schema_name )
585589 . map_err ( |e| log:: error!( "failed to fetch max timestamp from event_log: {e}" ) )
586590 . ok ( ) ;
587591
@@ -594,13 +598,12 @@ async fn get_handler(
594598 }
595599
596600 let query_filters = query_filters. into_inner ( ) ;
597- let mut version =
598- get_config_version ( & query_filters. version , & workspace_context, & mut conn) ?;
601+ let mut version = get_config_version ( & query_filters. version , & workspace_request) ?;
599602
600603 let mut config = generate_config_from_version (
601604 & mut version,
602605 & mut conn,
603- & workspace_context . schema_name ,
606+ & workspace_request . schema_name ,
604607 ) ?;
605608
606609 config = apply_prefix_filter_to_config ( & query_filters. prefix , config) ?;
@@ -619,7 +622,7 @@ async fn get_handler(
619622
620623 let mut response = HttpResponse :: Ok ( ) ;
621624 add_last_modified_to_header ( max_created_at, is_smithy, & mut response) ;
622- add_audit_id_to_header ( & mut conn, & mut response, & workspace_context . schema_name ) ;
625+ add_audit_id_to_header ( & mut conn, & mut response, & workspace_request . schema_name ) ;
623626 add_config_version_to_header ( & version, & mut response) ;
624627 Ok ( response. json ( config) )
625628}
@@ -636,12 +639,12 @@ async fn resolve_handler(
636639 db_conn : DbConnection ,
637640 dimension_params : DimensionQuery < QueryMap > ,
638641 query_filters : superposition_query:: Query < ResolveConfigQuery > ,
639- workspace_context : WorkspaceContext ,
642+ workspace_request : WorkspaceContext ,
640643) -> superposition:: Result < HttpResponse > {
641644 let DbConnection ( mut conn) = db_conn;
642645 let query_filters = query_filters. into_inner ( ) ;
643646
644- let max_created_at = get_max_created_at ( & mut conn, & workspace_context . schema_name )
647+ let max_created_at = get_max_created_at ( & mut conn, & workspace_request . schema_name )
645648 . map_err ( |e| log:: error!( "failed to fetch max timestamp from event_log : {e}" ) )
646649 . ok ( ) ;
647650
@@ -650,11 +653,11 @@ async fn resolve_handler(
650653 }
651654
652655 let mut config_version =
653- get_config_version ( & query_filters. version , & workspace_context , & mut conn ) ?;
656+ get_config_version ( & query_filters. version , & workspace_request ) ?;
654657 let mut config = generate_config_from_version (
655658 & mut config_version,
656659 & mut conn,
657- & workspace_context . schema_name ,
660+ & workspace_request . schema_name ,
658661 ) ?;
659662 let ( is_smithy, query_data) = setup_query_data ( & req, & body, & dimension_params) ?;
660663
@@ -664,41 +667,41 @@ async fn resolve_handler(
664667 merge_strategy,
665668 & mut conn,
666669 & query_filters,
667- & workspace_context ,
670+ & workspace_request ,
668671 ) ?;
669672
670673 let mut resp = HttpResponse :: Ok ( ) ;
671674 add_last_modified_to_header ( max_created_at, is_smithy, & mut resp) ;
672- add_audit_id_to_header ( & mut conn, & mut resp, & workspace_context . schema_name ) ;
675+ add_audit_id_to_header ( & mut conn, & mut resp, & workspace_request . schema_name ) ;
673676 add_config_version_to_header ( & config_version, & mut resp) ;
674677 Ok ( resp. json ( resolved_config) )
675678}
676679
677680#[ authorized]
678681#[ get( "/versions" ) ]
679682async fn list_version_handler (
683+ workspace_request : WorkspaceContext ,
680684 db_conn : DbConnection ,
681685 filters : Query < PaginationParams > ,
682- schema_name : SchemaName ,
683686) -> superposition:: Result < Json < PaginatedResponse < ConfigVersionListItem > > > {
684687 let DbConnection ( mut conn) = db_conn;
685688
686689 if let Some ( true ) = filters. all {
687690 let config_versions = config_versions:: config_versions
688- . schema_name ( & schema_name)
691+ . schema_name ( & workspace_request . schema_name )
689692 . select ( ConfigVersionListItem :: as_select ( ) )
690693 . get_results ( & mut conn) ?;
691694 return Ok ( Json ( PaginatedResponse :: all ( config_versions) ) ) ;
692695 }
693696
694697 let n_version: i64 = config_versions:: config_versions
695698 . count ( )
696- . schema_name ( & schema_name)
699+ . schema_name ( & workspace_request . schema_name )
697700 . get_result ( & mut conn) ?;
698701
699702 let limit = filters. count . unwrap_or ( 10 ) ;
700703 let mut builder = config_versions:: config_versions
701- . schema_name ( & schema_name)
704+ . schema_name ( & workspace_request . schema_name )
702705 . into_boxed ( )
703706 . order ( config_versions:: created_at. desc ( ) )
704707 . limit ( limit) ;
@@ -720,14 +723,14 @@ async fn list_version_handler(
720723#[ authorized]
721724#[ get( "/version/{version}" ) ]
722725async fn get_version_handler (
726+ workspace_request : WorkspaceContext ,
723727 db_conn : DbConnection ,
724728 version : Path < i64 > ,
725- schema_name : SchemaName ,
726729) -> superposition:: Result < Json < ConfigVersion > > {
727730 let DbConnection ( mut conn) = db_conn;
728731
729732 let config_version = config_versions:: config_versions
730- . schema_name ( & schema_name)
733+ . schema_name ( & workspace_request . schema_name )
731734 . find ( version. into_inner ( ) )
732735 . get_result :: < ConfigVersion > ( & mut conn) ?;
733736
0 commit comments