1use thiserror::Error;
2
3use crate::movement::MovementId;
4use crate::subsystem::SubsystemId;
5
6#[derive(Debug, Error)]
7pub enum MovementError {
8 #[error("Movement Cache Error: Movement missing from cache ({id})")]
9 CacheError { id: MovementId },
10
11 #[error("Movement Creation Error: {e}")]
12 CreationError { e: anyhow::Error },
13
14 #[error("Incorrect Status Error: Attempt to incorrectly set movement to {status}")]
15 IncorrectStatus { status: String },
16
17 #[error("Invalid Subsystem ID: {id} does not exist")]
18 InvalidSubsystemId { id: SubsystemId },
19
20 #[error("Invalid Movement ID: {id} does not exist")]
21 InvalidMovementId { id: MovementId },
22
23 #[error("Movement Load Error: Unable to load movement ({id}) from persister: {e}")]
24 LoadError { id: MovementId, e: anyhow::Error },
25
26 #[error("Persist Movement Failed: Unable to persist changes to movement ({id}): {e}")]
27 PersisterError { id: MovementId, e: anyhow::Error },
28
29 #[error("Subsystem Error ({name}): {error}")]
30 SubsystemError { name: String, error: String },
31}