use crate::ids::{AccountId, ConnectorId};
use serde::{Deserialize, Serialize};
use time::OffsetDateTime;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "ts", derive(ts_rs::TS))]
#[serde(rename_all = "snake_case")]
pub enum AccountStatus {
Active,
Expired,
Disconnected,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "ts", derive(ts_rs::TS))]
pub struct Account {
pub id: AccountId,
pub connector: ConnectorId,
pub display_name: String,
pub status: AccountStatus,
#[serde(with = "time::serde::rfc3339")]
#[cfg_attr(feature = "ts", ts(type = "string"))]
pub connected_at: OffsetDateTime,
}
impl Account {
pub fn is_usable(&self) -> bool {
matches!(self.status, AccountStatus::Active)
}
}