lab_resource_manager/domain/aggregates/resource_usage/
errors.rs

1use 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 {}