use crate::model::Token as LegacyToken;
pub type TokenId = String;
pub type ParallelGroupId = String;
pub use crate::model::TokenStatus;
pub use crate::model::TokenMode;
#[derive(Debug, Clone)]
pub struct Token {
pub id: TokenId,
pub node_id: String,
pub status: TokenStatus,
pub mode: TokenMode,
pub version: u32,
pub attempt: u32,
pub parallel_group_id: Option<ParallelGroupId>,
pub updated_at: Option<String>,
}
impl Token {
pub fn transition(&mut self, to: TokenStatus) {
self.status = to;
}
pub fn from_legacy(legacy: &LegacyToken) -> Self {
Token {
id: legacy.id.clone(),
node_id: legacy.node_id.clone(),
status: legacy.status,
mode: legacy.mode,
version: legacy.version,
attempt: legacy.attempt,
parallel_group_id: legacy.parallel_group_id.clone(),
updated_at: legacy.updated_at.clone(),
}
}
pub fn to_legacy(&self) -> LegacyToken {
LegacyToken {
id: self.id.clone(),
node_id: self.node_id.clone(),
status: self.status,
mode: self.mode,
version: self.version,
attempt: self.attempt,
parallel_group_id: self.parallel_group_id.clone(),
updated_at: self.updated_at.clone(),
}
}
}