43
43
44
44
use crate :: templates:: SplitTemplate ;
45
45
use crate :: webserver:: http:: RequestContext ;
46
+ use crate :: webserver:: http_request_info:: RequestInfo ;
46
47
use crate :: webserver:: response_writer:: { AsyncResponseWriter , ResponseWriter } ;
47
48
use crate :: webserver:: ErrorWithStatus ;
48
49
use crate :: AppState ;
@@ -80,7 +81,7 @@ pub enum PageContext {
80
81
/// Handles the first SQL statements, before the headers have been sent to
81
82
pub struct HeaderContext {
82
83
app_state : Arc < AppState > ,
83
- request_context : RequestContext ,
84
+ request_context : Arc < RequestInfo > ,
84
85
pub writer : ResponseWriter ,
85
86
response : HttpResponseBuilder ,
86
87
has_status : bool ,
@@ -90,7 +91,7 @@ impl HeaderContext {
90
91
#[ must_use]
91
92
pub fn new (
92
93
app_state : Arc < AppState > ,
93
- request_context : RequestContext ,
94
+ request_context : Arc < RequestInfo > ,
94
95
writer : ResponseWriter ,
95
96
) -> Self {
96
97
let mut response = HttpResponseBuilder :: new ( StatusCode :: OK ) ;
@@ -364,7 +365,7 @@ impl HeaderContext {
364
365
}
365
366
366
367
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) ?;
368
369
Ok ( PageContext :: Header ( self ) )
369
370
}
370
371
@@ -651,7 +652,7 @@ pub struct HtmlRenderContext<W: std::io::Write> {
651
652
current_component : Option < SplitTemplateRenderer > ,
652
653
shell_renderer : SplitTemplateRenderer ,
653
654
current_statement : usize ,
654
- request_context : RequestContext ,
655
+ request_context : Arc < RequestInfo > ,
655
656
}
656
657
657
658
const DEFAULT_COMPONENT : & str = "table" ;
@@ -661,20 +662,21 @@ const FRAGMENT_SHELL_COMPONENT: &str = "shell-empty";
661
662
impl < W : std:: io:: Write > HtmlRenderContext < W > {
662
663
pub async fn new (
663
664
app_state : Arc < AppState > ,
664
- request_context : RequestContext ,
665
+ request_context : Arc < RequestInfo > ,
665
666
mut writer : W ,
666
667
initial_row : JsonValue ,
667
668
) -> anyhow:: Result < HtmlRenderContext < W > > {
668
669
log:: debug!( "Creating the shell component for the page" ) ;
669
670
670
671
let mut initial_rows = vec ! [ Cow :: Borrowed ( & initial_row) ] ;
671
672
673
+ let is_embedded = request_context. is_embedded ( ) ;
672
674
if !initial_rows
673
675
. first ( )
674
676
. and_then ( |c| get_object_str ( c, "component" ) )
675
677
. is_some_and ( Self :: is_shell_component)
676
678
{
677
- let default_shell = if request_context . is_embedded {
679
+ let default_shell = if is_embedded {
678
680
FRAGMENT_SHELL_COMPONENT
679
681
} else {
680
682
PAGE_SHELL_COMPONENT
@@ -692,7 +694,7 @@ impl<W: std::io::Write> HtmlRenderContext<W> {
692
694
. expect ( "shell row should exist at this point" ) ;
693
695
let mut shell_component =
694
696
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 {
696
698
log:: warn!(
697
699
"Embedded pages cannot use a shell component! Ignoring the '{shell_component}' component and its properties: {shell_row}"
698
700
) ;
@@ -739,11 +741,7 @@ impl<W: std::io::Write> HtmlRenderContext<W> {
739
741
}
740
742
741
743
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) ;
747
745
}
748
746
749
747
match self . open_component_with_data ( component_name, & data) . await {
@@ -910,14 +908,14 @@ impl<W: std::io::Write> HtmlRenderContext<W> {
910
908
}
911
909
912
910
fn handle_log_component (
913
- source_path : & Path ,
911
+ request_context : & RequestInfo ,
914
912
current_statement : Option < usize > ,
915
913
data : & JsonValue ,
916
914
) -> anyhow:: Result < ( ) > {
917
915
let level_name = get_object_str ( data, "level" ) . unwrap_or ( "info" ) ;
918
916
let log_level = log:: Level :: from_str ( level_name) . with_context ( || "Invalid log level value" ) ?;
919
917
920
- let mut target = format ! ( "sqlpage::log from \" {}\" " , source_path . display ( ) ) ;
918
+ let mut target = format ! ( "sqlpage::log from \" {}\" " , request_context . path ) ;
921
919
if let Some ( current_statement) = current_statement {
922
920
write ! ( & mut target, " statement {current_statement}" ) ?;
923
921
}
0 commit comments