1use origin_domain::{AccountId, ConnectorId};
2use origin_storage::namespace;
3use serde::{Deserialize, Serialize};
4use std::fmt;
5
6#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
12#[cfg_attr(feature = "ts", derive(ts_rs::TS))]
13pub struct SyncTarget {
14 pub connector: ConnectorId,
15 pub account: AccountId,
16 pub name: String,
17}
18
19impl SyncTarget {
20 pub fn new(connector: ConnectorId, account: AccountId, name: impl Into<String>) -> Self {
21 Self {
22 connector,
23 account,
24 name: name.into(),
25 }
26 }
27
28 pub(crate) fn namespace(&self) -> String {
32 namespace::account(&self.connector, &self.account, "sync")
33 }
34}
35
36impl fmt::Display for SyncTarget {
37 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
38 write!(f, "{}/{}/{}", self.connector, self.account, self.name)
39 }
40}