Skip to main content

lab_resource_manager/domain/aggregates/resource_usage/value_objects/
usage_id.rs

1/// リソース使用予定の識別子
2///
3/// ドメイン層で管理する一意なID。
4/// デフォルトではUUID v4を生成しますが、外部システムのIDも受け入れます。
5#[derive(Debug, Clone, PartialEq, Eq, Hash)]
6pub struct UsageId(String);
7
8impl Default for UsageId {
9    fn default() -> Self {
10        Self::new()
11    }
12}
13
14impl UsageId {
15    /// 新しいUsageIdを生成
16    ///
17    /// UUID v4を使用して一意なIDを生成します。
18    ///
19    /// # Returns
20    /// UUID v4形式の新しいUsageId
21    pub fn new() -> Self {
22        Self(uuid::Uuid::new_v4().to_string())
23    }
24
25    /// 既存のID文字列からUsageIdを再構築
26    ///
27    /// リポジトリから読み込んだデータを復元する際に使用します。
28    ///
29    /// # Arguments
30    /// * `id` - ID文字列
31    pub fn from_string(id: String) -> Self {
32        Self(id)
33    }
34
35    /// 文字列表現を取得
36    pub fn as_str(&self) -> &str {
37        &self.0
38    }
39}