@@ -203,7 +203,9 @@ use axum::extract::Json;
203
203
use axum:: extract:: Query ;
204
204
use axum:: extract:: State ;
205
205
use axum:: Extension ;
206
+ use chrono:: DateTime ;
206
207
use chrono:: NaiveDateTime ;
208
+ use chrono:: Utc ;
207
209
use diesel:: pg:: Pg ;
208
210
use diesel:: sql_query;
209
211
use diesel:: sql_types:: Jsonb ;
@@ -218,6 +220,13 @@ use editoast_derive::SearchConfigStore;
218
220
use editoast_search:: query_into_sql;
219
221
use editoast_search:: SearchConfigStore as _;
220
222
use editoast_search:: SearchError ;
223
+ use editoast_schemas:: train_schedule:: Comfort ;
224
+ use editoast_schemas:: train_schedule:: Distribution ;
225
+ use editoast_schemas:: train_schedule:: Margins ;
226
+ use editoast_schemas:: train_schedule:: PathItem ;
227
+ use editoast_schemas:: train_schedule:: PowerRestrictionItem ;
228
+ use editoast_schemas:: train_schedule:: ScheduleItem ;
229
+ use editoast_schemas:: train_schedule:: TrainScheduleOptions ;
221
230
use serde:: Deserialize ;
222
231
use serde:: Serialize ;
223
232
use serde_json:: value:: Value as JsonValue ;
@@ -344,9 +353,8 @@ async fn search(
344
353
Json ( SearchPayload { object, query, dry } ) : Json < SearchPayload > ,
345
354
) -> Result < Json < serde_json:: Value > > {
346
355
let roles: HashSet < BuiltinRole > = match object. as_str ( ) {
347
- "track" | "operationalpoint" | "signal" | "trainschedule" => {
348
- HashSet :: from ( [ BuiltinRole :: InfraRead ] )
349
- }
356
+ "track" | "operationalpoint" | "signal" => HashSet :: from ( [ BuiltinRole :: InfraRead ] ) ,
357
+ "trainschedule" => HashSet :: from ( [ BuiltinRole :: TimetableRead ] ) ,
350
358
"project" | "study" | "scenario" => HashSet :: from ( [ BuiltinRole :: OpsRead ] ) ,
351
359
_ => {
352
360
return Err ( SearchApiError :: ObjectType {
@@ -697,33 +705,33 @@ pub(super) struct SearchResultItemTrainSchedule {
697
705
#[ search( sql = "train_schedule.id" ) ]
698
706
id : u64 ,
699
707
#[ search( sql = "train_schedule.train_name" ) ]
700
- train_name : String , // useless puisqu'on en a besoin pour la request?
708
+ train_name : String ,
701
709
#[ search( sql = "train_schedule.labels" ) ]
702
- labels : Vec < String > ,
710
+ labels : Vec < Option < String > > ,
703
711
#[ search( sql = "train_schedule.rolling_stock_name" ) ]
704
712
rolling_stock_name : String ,
705
713
#[ search( sql = "train_schedule.timetable_id" ) ]
706
- timetable_id : u64 , // useless puisqu'on en a besoin pour la request?
714
+ timetable_id : i64 ,
707
715
#[ search( sql = "train_schedule.start_time" ) ]
708
- start_time : String ,
716
+ start_time : DateTime < Utc > ,
709
717
#[ search( sql = "train_schedule.schedule" ) ]
710
- schedule : Vec < String > ,
718
+ schedule : Vec < ScheduleItem > ,
711
719
#[ search( sql = "train_schedule.margins" ) ]
712
- margins : Vec < String > ,
720
+ margins : Margins ,
713
721
#[ search( sql = "train_schedule.initial_speed" ) ]
714
722
initial_speed : f64 ,
715
723
#[ search( sql = "train_schedule.comfort" ) ]
716
- comfort : i16 ,
724
+ comfort : Comfort ,
717
725
#[ search( sql = "train_schedule.path" ) ]
718
- path : Vec < String > ,
726
+ path : Vec < PathItem > ,
719
727
#[ search( sql = "train_schedule.constraint_distribution" ) ]
720
- constraint_distribution : i16 ,
728
+ constraint_distribution : Distribution ,
721
729
#[ search( sql = "train_schedule.speed_limit_tag" ) ]
722
- speed_limit_tag : Vec < String > ,
730
+ speed_limit_tag : Option < String > ,
723
731
#[ search( sql = "train_schedule.power_restrictions" ) ]
724
- power_restrictions : Vec < String > ,
732
+ power_restrictions : Vec < PowerRestrictionItem > ,
725
733
#[ search( sql = "train_schedule.options" ) ]
726
- options : Vec < String > ,
734
+ options : TrainScheduleOptions ,
727
735
}
728
736
729
737
/// See [editoast_search::SearchConfigStore::find]
0 commit comments