Skip to content

Commit 8f9e29b

Browse files
committed
editoast: use current timetable for conflicts
1 parent ad3c1c8 commit 8f9e29b

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

editoast/src/core/conflicts.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use crate::models::SpacingRequirement;
1010
#[derive(Debug, Serialize)]
1111
pub struct ConflicDetectionRequest {
1212
pub trains_requirements: Vec<TrainRequirements>,
13+
pub infra_id: i64,
1314
}
1415

1516
#[derive(Debug, Serialize)]
@@ -40,6 +41,6 @@ impl AsCoreRequest<Json<ConflictDetectionResponse>> for ConflicDetectionRequest
4041
const URL_PATH: &'static str = "/detect_conflicts";
4142

4243
fn infra_id(&self) -> Option<i64> {
43-
None
44+
Some(self.infra_id)
4445
}
4546
}

editoast/src/core/v2/conflict_detection.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ editoast_common::schemas! {
1919
pub struct ConflictDetectionRequest {
2020
/// List of requirements for each train
2121
pub trains_requirements: HashMap<i64, TrainRequirements>,
22+
pub infra_id: i64,
2223
}
2324

2425
#[derive(Debug, Serialize)]
@@ -33,6 +34,7 @@ pub struct ConflictDetectionResponse {
3334
/// List of conflicts detected
3435
#[schema(inline)]
3536
pub conflicts: Vec<Conflict>,
37+
pub infra_id: i64,
3638
}
3739

3840
#[derive(Debug, Clone, Deserialize, Serialize, ToSchema)]
@@ -62,6 +64,6 @@ impl AsCoreRequest<Json<ConflictDetectionResponse>> for ConflictDetectionRequest
6264
const URL_PATH: &'static str = "/v2/conflict_detection";
6365

6466
fn infra_id(&self) -> Option<i64> {
65-
None
67+
Some(self.infra_id)
6668
}
6769
}

editoast/src/views/timetable.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,17 @@ async fn get_conflicts(
145145
timetable_id: Path<i64>,
146146
core_client: Data<CoreClient>,
147147
) -> Result<Json<Vec<Conflict>>> {
148+
let db_pool = db_pool.into_inner();
148149
let timetable_id = timetable_id.into_inner();
149150

151+
let timetable = Timetable::retrieve(db_pool.clone(), timetable_id)
152+
.await?
153+
.ok_or(TimetableError::NotFound { timetable_id })?;
154+
let scenario = timetable.get_scenario(db_pool.clone()).await?;
155+
let infra_id = scenario.infra_id.unwrap();
156+
150157
let (schedules, simulations) =
151-
get_simulated_schedules_from_timetable(timetable_id, db_pool.into_inner()).await?;
158+
get_simulated_schedules_from_timetable(timetable_id, db_pool).await?;
152159

153160
let mut id_to_name = HashMap::new();
154161
let mut trains_requirements = Vec::new();
@@ -194,6 +201,7 @@ async fn get_conflicts(
194201

195202
let request = ConflicDetectionRequest {
196203
trains_requirements,
204+
infra_id,
197205
};
198206
let response = request.fetch(&core_client).await?;
199207

editoast/src/views/v2/timetable.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ pub async fn conflicts(
376376
}
377377
let conflict_detection_request = ConflictDetectionRequest {
378378
trains_requirements,
379+
infra_id,
379380
};
380381

381382
// 3. Call core

0 commit comments

Comments
 (0)