lab_resource_manager/domain/aggregates/resource_usage/
errors.rs1use chrono::{DateTime, Utc};
2use std::fmt;
3
4#[derive(Debug, Clone)]
5pub enum ResourceUsageError {
6 InvalidTimePeriod {
7 start: DateTime<Utc>,
8 end: DateTime<Utc>,
9 },
10 NoResourceItems,
11 UsageConflict {
12 resource: String,
13 conflicting_user: String,
14 },
15}
16
17impl fmt::Display for ResourceUsageError {
18 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19 match self {
20 ResourceUsageError::InvalidTimePeriod { start, end } => {
21 write!(
22 f,
23 "無効な時間枠: 終了時刻({})は開始時刻({})よりあとである必要があります。",
24 end.format("%Y-%m-%d %H:%M:%S"),
25 start.format("%Y-%m-%d %H:%M:%S")
26 )
27 }
28 ResourceUsageError::NoResourceItems => {
29 write!(f, "資源項目エラー: 少なくとも1つの資源項目が必要です")
30 }
31 ResourceUsageError::UsageConflict {
32 resource,
33 conflicting_user,
34 } => {
35 write!(
36 f,
37 "使用予定の競合: {}が{}の使用予定と競合しています",
38 resource, conflicting_user
39 )
40 }
41 }
42 }
43}
44
45impl std::error::Error for ResourceUsageError {}
46
47impl crate::domain::errors::DomainError for ResourceUsageError {}