use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct GraphId(pub Uuid);
impl GraphId {
pub fn new() -> Self {
Self(Uuid::new_v4())
}
pub fn from_u128(value: u128) -> Self {
Self(Uuid::from_u128(value))
}
pub fn from_bytes(bytes: [u8; 16]) -> Self {
Self(Uuid::from_bytes(bytes))
}
}
impl std::fmt::Display for GraphId {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.0.fmt(f)
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct NodeId(pub Uuid);
impl NodeId {
pub fn new() -> Self {
Self(Uuid::new_v4())
}
pub fn from_u128(value: u128) -> Self {
Self(Uuid::from_u128(value))
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct PortId(pub Uuid);
impl PortId {
pub fn new() -> Self {
Self(Uuid::new_v4())
}
pub fn from_u128(value: u128) -> Self {
Self(Uuid::from_u128(value))
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct EdgeId(pub Uuid);
impl EdgeId {
pub fn new() -> Self {
Self(Uuid::new_v4())
}
pub fn from_u128(value: u128) -> Self {
Self(Uuid::from_u128(value))
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct SymbolId(pub Uuid);
impl SymbolId {
pub fn new() -> Self {
Self(Uuid::new_v4())
}
pub fn from_u128(value: u128) -> Self {
Self(Uuid::from_u128(value))
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct GroupId(pub Uuid);
impl GroupId {
pub fn new() -> Self {
Self(Uuid::new_v4())
}
pub fn from_u128(value: u128) -> Self {
Self(Uuid::from_u128(value))
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct StickyNoteId(pub Uuid);
impl StickyNoteId {
pub fn new() -> Self {
Self(Uuid::new_v4())
}
pub fn from_u128(value: u128) -> Self {
Self(Uuid::from_u128(value))
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct BindingId(pub Uuid);
impl BindingId {
pub fn new() -> Self {
Self(Uuid::new_v4())
}
pub fn from_u128(value: u128) -> Self {
Self(Uuid::from_u128(value))
}
}
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct NodeKindKey(pub String);
impl NodeKindKey {
pub fn new(key: impl Into<String>) -> Self {
Self(key.into())
}
}
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct PortKey(pub String);
impl PortKey {
pub fn new(key: impl Into<String>) -> Self {
Self(key.into())
}
}