use origin_domain::{AccountId, ConnectorId};
use origin_storage::namespace;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[cfg_attr(feature = "ts", derive(ts_rs::TS))]
pub struct SyncTarget {
pub connector: ConnectorId,
pub account: AccountId,
pub name: String,
}
impl SyncTarget {
pub fn new(connector: ConnectorId, account: AccountId, name: impl Into<String>) -> Self {
Self {
connector,
account,
name: name.into(),
}
}
pub(crate) fn namespace(&self) -> String {
namespace::account(&self.connector, &self.account, "sync")
}
}
impl fmt::Display for SyncTarget {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}/{}/{}", self.connector, self.account, self.name)
}
}