Skip to main content

ras_types/domain/
ids.rs

1use serde::{Deserialize, Serialize};
2use smol_str::SmolStr;
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
6#[serde(transparent)]
7pub struct AgentId(pub Uuid);
8
9impl AgentId {
10    #[must_use]
11    pub fn new() -> Self {
12        Self(Uuid::now_v7())
13    }
14}
15
16impl Default for AgentId {
17    fn default() -> Self {
18        Self::new()
19    }
20}
21
22#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
23#[serde(transparent)]
24pub struct StepId(pub u32);
25
26#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
27#[serde(transparent)]
28pub struct TargetId(pub SmolStr);
29
30#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
31#[serde(transparent)]
32pub struct SessionId(pub SmolStr);
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
35#[serde(transparent)]
36pub struct BackendNodeId(pub i64);
37
38#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
39#[serde(transparent)]
40pub struct ActionName(pub SmolStr);