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}