@@ -5,6 +5,7 @@ use std::{
55
66use std:: str:: FromStr ;
77
8+ use rocket:: form:: Form ;
89use comrak:: { format_html_with_plugins, parse_document, Arena , ComrakPlugins } ;
910use lazy_static:: lazy_static;
1011use markdown:: mdast:: Node ;
@@ -646,9 +647,16 @@ impl Collection {
646647}
647648}
648649
650+
651+ #[ post( "/search_event" , data ="<search_event>" ) ]
652+ async fn search_event ( search_event : Form < crate :: forms:: SearchEvent > , site_search : & State < crate :: utils:: markdown:: SiteSearch > ) ->ResponseOk {
653+ eprintln ! ( "WE GOT IT: {:?}" , search_event. clicked) ;
654+ ResponseOk ( "" . to_string ( ) )
655+ }
656+
649657#[ get( "/search?<query>" , rank =20 ) ]
650658async fn search ( query : & str , site_search : & State < crate :: utils:: markdown:: SiteSearch > ) ->ResponseOk {
651- let results = site_search
659+ let ( search_id , results) = site_search
652660. search ( query, None , None )
653661. await
654662. expect ( "Error performing search" ) ;
@@ -688,6 +696,7 @@ async fn search(query: &str, site_search: &State<crate::utils::markdown::SiteSea
688696
689697ResponseOk (
690698Template ( Search {
699+ search_id,
691700query : query. to_string ( ) ,
692701 results,
693702} )
@@ -697,25 +706,23 @@ async fn search(query: &str, site_search: &State<crate::utils::markdown::SiteSea
697706
698707#[ get( "/search_blog?<query>&<tag>" , rank =20 ) ]
699708async fn search_blog ( query : & str , tag : & str , site_search : & State < crate :: utils:: markdown:: SiteSearch > ) ->ResponseOk {
700- let tag =if tag. len ( ) > 0 {
709+ let tag =if ! tag. is_empty ( ) {
701710Some ( Vec :: from ( [ tag. to_string ( ) ] ) )
702711} else {
703712None
704713} ;
705714
706715// If user is not making a search return all blogs in default design.
707- let results =if query. len ( ) > 0 || tag. clone ( ) . is_some ( ) {
716+ let results =if ! query. is_empty ( ) || tag. clone ( ) . is_some ( ) {
708717let results = site_search. search ( query, Some ( DocType :: Blog ) , tag. clone ( ) ) . await ;
709718
710- let results = match results{
711- Ok ( results) => results
719+ match results{
720+ Ok ( ( _search_id , results) ) => results
712721. into_iter ( )
713- . map ( |document| article_preview:: DocMeta :: from_document ( document ) )
722+ . map ( article_preview:: DocMeta :: from_document)
714723. collect :: < Vec < article_preview:: DocMeta > > ( ) ,
715724Err ( _) =>Vec :: new ( ) ,
716- } ;
717-
718- results
725+ }
719726} else {
720727let mut results =Vec :: new ( ) ;
721728
@@ -728,7 +735,7 @@ async fn search_blog(query: &str, tag: &str, site_search: &State<crate::utils::m
728735 results
729736} ;
730737
731- let is_search = query. len ( ) > 0 || tag. is_some ( ) ;
738+ let is_search =! query. is_empty ( ) || tag. is_some ( ) ;
732739
733740ResponseOk (
734741crate :: components:: pages:: blog:: blog_search:: Response :: new ( )
@@ -896,6 +903,7 @@ pub fn routes() -> Vec<Route> {
896903 get_docs_asset,
897904 get_user_guides,
898905 search,
906+ search_event,
899907 search_blog
900908]
901909}