4343
4444use crate :: templates:: SplitTemplate ;
4545use crate :: webserver:: http:: RequestContext ;
46+ use crate :: webserver:: http_request_info:: RequestInfo ;
4647use crate :: webserver:: response_writer:: { AsyncResponseWriter , ResponseWriter } ;
4748use crate :: webserver:: ErrorWithStatus ;
4849use crate :: AppState ;
@@ -80,7 +81,7 @@ pub enum PageContext {
8081/// Handles the first SQL statements, before the headers have been sent to
8182pub struct HeaderContext {
8283 app_state : Arc < AppState > ,
83- request_context : RequestContext ,
84+ request_context : Arc < RequestInfo > ,
8485 pub writer : ResponseWriter ,
8586 response : HttpResponseBuilder ,
8687 has_status : bool ,
@@ -90,7 +91,7 @@ impl HeaderContext {
9091 #[ must_use]
9192 pub fn new (
9293 app_state : Arc < AppState > ,
93- request_context : RequestContext ,
94+ request_context : Arc < RequestInfo > ,
9495 writer : ResponseWriter ,
9596 ) -> Self {
9697 let mut response = HttpResponseBuilder :: new ( StatusCode :: OK ) ;
@@ -364,7 +365,7 @@ impl HeaderContext {
364365 }
365366
366367 fn log ( self , data : & JsonValue ) -> anyhow:: Result < PageContext > {
367- handle_log_component ( & self . request_context . source_path , Option :: None , data) ?;
368+ handle_log_component ( & self . request_context , Option :: None , data) ?;
368369 Ok ( PageContext :: Header ( self ) )
369370 }
370371
@@ -651,7 +652,7 @@ pub struct HtmlRenderContext<W: std::io::Write> {
651652 current_component : Option < SplitTemplateRenderer > ,
652653 shell_renderer : SplitTemplateRenderer ,
653654 current_statement : usize ,
654- request_context : RequestContext ,
655+ request_context : Arc < RequestInfo > ,
655656}
656657
657658const DEFAULT_COMPONENT : & str = "table" ;
@@ -661,20 +662,21 @@ const FRAGMENT_SHELL_COMPONENT: &str = "shell-empty";
661662impl < W : std:: io:: Write > HtmlRenderContext < W > {
662663 pub async fn new (
663664 app_state : Arc < AppState > ,
664- request_context : RequestContext ,
665+ request_context : Arc < RequestInfo > ,
665666 mut writer : W ,
666667 initial_row : JsonValue ,
667668 ) -> anyhow:: Result < HtmlRenderContext < W > > {
668669 log:: debug!( "Creating the shell component for the page" ) ;
669670
670671 let mut initial_rows = vec ! [ Cow :: Borrowed ( & initial_row) ] ;
671672
673+ let is_embedded = request_context. is_embedded ( ) ;
672674 if !initial_rows
673675 . first ( )
674676 . and_then ( |c| get_object_str ( c, "component" ) )
675677 . is_some_and ( Self :: is_shell_component)
676678 {
677- let default_shell = if request_context . is_embedded {
679+ let default_shell = if is_embedded {
678680 FRAGMENT_SHELL_COMPONENT
679681 } else {
680682 PAGE_SHELL_COMPONENT
@@ -692,7 +694,7 @@ impl<W: std::io::Write> HtmlRenderContext<W> {
692694 . expect ( "shell row should exist at this point" ) ;
693695 let mut shell_component =
694696 get_object_str ( & shell_row, "component" ) . expect ( "shell should exist" ) ;
695- if request_context . is_embedded && shell_component != FRAGMENT_SHELL_COMPONENT {
697+ if is_embedded && shell_component != FRAGMENT_SHELL_COMPONENT {
696698 log:: warn!(
697699 "Embedded pages cannot use a shell component! Ignoring the '{shell_component}' component and its properties: {shell_row}"
698700 ) ;
@@ -739,11 +741,7 @@ impl<W: std::io::Write> HtmlRenderContext<W> {
739741 }
740742
741743 if component_name == "log" {
742- return handle_log_component (
743- & self . request_context . source_path ,
744- Some ( self . current_statement ) ,
745- data,
746- ) ;
744+ return handle_log_component ( & self . request_context , Some ( self . current_statement ) , data) ;
747745 }
748746
749747 match self . open_component_with_data ( component_name, & data) . await {
@@ -910,14 +908,14 @@ impl<W: std::io::Write> HtmlRenderContext<W> {
910908}
911909
912910fn handle_log_component (
913- source_path : & Path ,
911+ request_context : & RequestInfo ,
914912 current_statement : Option < usize > ,
915913 data : & JsonValue ,
916914) -> anyhow:: Result < ( ) > {
917915 let level_name = get_object_str ( data, "level" ) . unwrap_or ( "info" ) ;
918916 let log_level = log:: Level :: from_str ( level_name) . with_context ( || "Invalid log level value" ) ?;
919917
920- let mut target = format ! ( "sqlpage::log from \" {}\" " , source_path . display ( ) ) ;
918+ let mut target = format ! ( "sqlpage::log from \" {}\" " , request_context . path ) ;
921919 if let Some ( current_statement) = current_statement {
922920 write ! ( & mut target, " statement {current_statement}" ) ?;
923921 }
0 commit comments