@@ -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,21 +444,22 @@ 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 > {
452+ let schema_name = & workspace_request. schema_name ;
453+
445454 let DbConnection ( mut conn) = db_conn;
446455 let is_approve = req
447456 . headers ( )
448457 . get ( "x-approve" )
449458 . and_then ( |value| value. to_str ( ) . ok ( ) . and_then ( |s| s. parse :: < bool > ( ) . ok ( ) ) )
450459 . unwrap_or ( false ) ;
451460
452- let dimensions_info_map = fetch_dimensions_info_map ( & mut conn, & schema_name) ?;
453- let mut config = generate_cac ( & mut conn, & schema_name) ?;
461+ let dimensions_info_map = fetch_dimensions_info_map ( & mut conn, schema_name) ?;
462+ let mut config = generate_cac ( & mut conn, schema_name) ?;
454463 let default_config = ( config. default_configs ) . clone ( ) ;
455464 for ( key, _) in default_config {
456465 let contexts = config. contexts ;
@@ -465,12 +474,11 @@ async fn reduce_handler(
465474 & dimensions_info_map,
466475 default_config. clone ( ) ,
467476 is_approve,
468- & schema_name,
469- & workspace_settings,
477+ & workspace_request,
470478 )
471479 . await ?;
472480 if is_approve {
473- config = generate_cac ( & mut conn, & schema_name) ?;
481+ config = generate_cac ( & mut conn, schema_name) ?;
474482 }
475483 }
476484
@@ -480,10 +488,7 @@ async fn reduce_handler(
480488#[ cfg( feature = "high-performance-mode" ) ]
481489#[ authorized]
482490#[ get( "/fast" ) ]
483- async fn get_fast_handler (
484- schema_name : SchemaName ,
485- state : Data < AppState > ,
486- ) -> superposition:: Result < HttpResponse > {
491+ async fn get_fast_handler ( state : Data < AppState > ) -> superposition:: Result < HttpResponse > {
487492 use fred:: interfaces:: MetricsInterface ;
488493
489494 log:: debug!( "Started redis fetch" ) ;
@@ -577,11 +582,11 @@ async fn get_handler(
577582 db_conn : DbConnection ,
578583 dimension_params : DimensionQuery < QueryMap > ,
579584 query_filters : superposition_query:: Query < ConfigQuery > ,
580- workspace_context : WorkspaceContext ,
585+ workspace_request : WorkspaceContext ,
581586) -> superposition:: Result < HttpResponse > {
582587 let DbConnection ( mut conn) = db_conn;
583588
584- let max_created_at = get_max_created_at ( & mut conn, & workspace_context . schema_name )
589+ let max_created_at = get_max_created_at ( & mut conn, & workspace_request . schema_name )
585590 . map_err ( |e| log:: error!( "failed to fetch max timestamp from event_log: {e}" ) )
586591 . ok ( ) ;
587592
@@ -595,12 +600,12 @@ async fn get_handler(
595600
596601 let query_filters = query_filters. into_inner ( ) ;
597602 let mut version =
598- get_config_version ( & query_filters. version , & workspace_context , & mut conn) ?;
603+ get_config_version ( & query_filters. version , & workspace_request , & mut conn) ?;
599604
600605 let mut config = generate_config_from_version (
601606 & mut version,
602607 & mut conn,
603- & workspace_context . schema_name ,
608+ & workspace_request . schema_name ,
604609 ) ?;
605610
606611 config = apply_prefix_filter_to_config ( & query_filters. prefix , config) ?;
@@ -619,7 +624,7 @@ async fn get_handler(
619624
620625 let mut response = HttpResponse :: Ok ( ) ;
621626 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 ) ;
627+ add_audit_id_to_header ( & mut conn, & mut response, & workspace_request . schema_name ) ;
623628 add_config_version_to_header ( & version, & mut response) ;
624629 Ok ( response. json ( config) )
625630}
@@ -636,12 +641,12 @@ async fn resolve_handler(
636641 db_conn : DbConnection ,
637642 dimension_params : DimensionQuery < QueryMap > ,
638643 query_filters : superposition_query:: Query < ResolveConfigQuery > ,
639- workspace_context : WorkspaceContext ,
644+ workspace_request : WorkspaceContext ,
640645) -> superposition:: Result < HttpResponse > {
641646 let DbConnection ( mut conn) = db_conn;
642647 let query_filters = query_filters. into_inner ( ) ;
643648
644- let max_created_at = get_max_created_at ( & mut conn, & workspace_context . schema_name )
649+ let max_created_at = get_max_created_at ( & mut conn, & workspace_request . schema_name )
645650 . map_err ( |e| log:: error!( "failed to fetch max timestamp from event_log : {e}" ) )
646651 . ok ( ) ;
647652
@@ -650,11 +655,11 @@ async fn resolve_handler(
650655 }
651656
652657 let mut config_version =
653- get_config_version ( & query_filters. version , & workspace_context , & mut conn) ?;
658+ get_config_version ( & query_filters. version , & workspace_request , & mut conn) ?;
654659 let mut config = generate_config_from_version (
655660 & mut config_version,
656661 & mut conn,
657- & workspace_context . schema_name ,
662+ & workspace_request . schema_name ,
658663 ) ?;
659664 let ( is_smithy, query_data) = setup_query_data ( & req, & body, & dimension_params) ?;
660665
@@ -664,41 +669,41 @@ async fn resolve_handler(
664669 merge_strategy,
665670 & mut conn,
666671 & query_filters,
667- & workspace_context ,
672+ & workspace_request ,
668673 ) ?;
669674
670675 let mut resp = HttpResponse :: Ok ( ) ;
671676 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 ) ;
677+ add_audit_id_to_header ( & mut conn, & mut resp, & workspace_request . schema_name ) ;
673678 add_config_version_to_header ( & config_version, & mut resp) ;
674679 Ok ( resp. json ( resolved_config) )
675680}
676681
677682#[ authorized]
678683#[ get( "/versions" ) ]
679684async fn list_version_handler (
685+ workspace_request : WorkspaceContext ,
680686 db_conn : DbConnection ,
681687 filters : Query < PaginationParams > ,
682- schema_name : SchemaName ,
683688) -> superposition:: Result < Json < PaginatedResponse < ConfigVersionListItem > > > {
684689 let DbConnection ( mut conn) = db_conn;
685690
686691 if let Some ( true ) = filters. all {
687692 let config_versions = config_versions:: config_versions
688- . schema_name ( & schema_name)
693+ . schema_name ( & workspace_request . schema_name )
689694 . select ( ConfigVersionListItem :: as_select ( ) )
690695 . get_results ( & mut conn) ?;
691696 return Ok ( Json ( PaginatedResponse :: all ( config_versions) ) ) ;
692697 }
693698
694699 let n_version: i64 = config_versions:: config_versions
695700 . count ( )
696- . schema_name ( & schema_name)
701+ . schema_name ( & workspace_request . schema_name )
697702 . get_result ( & mut conn) ?;
698703
699704 let limit = filters. count . unwrap_or ( 10 ) ;
700705 let mut builder = config_versions:: config_versions
701- . schema_name ( & schema_name)
706+ . schema_name ( & workspace_request . schema_name )
702707 . into_boxed ( )
703708 . order ( config_versions:: created_at. desc ( ) )
704709 . limit ( limit) ;
@@ -720,14 +725,14 @@ async fn list_version_handler(
720725#[ authorized]
721726#[ get( "/version/{version}" ) ]
722727async fn get_version_handler (
728+ workspace_request : WorkspaceContext ,
723729 db_conn : DbConnection ,
724730 version : Path < i64 > ,
725- schema_name : SchemaName ,
726731) -> superposition:: Result < Json < ConfigVersion > > {
727732 let DbConnection ( mut conn) = db_conn;
728733
729734 let config_version = config_versions:: config_versions
730- . schema_name ( & schema_name)
735+ . schema_name ( & workspace_request . schema_name )
731736 . find ( version. into_inner ( ) )
732737 . get_result :: < ConfigVersion > ( & mut conn) ?;
733738
0 commit comments