1use crate::ids::{AccountId, ConnectorId};
4use serde::{Deserialize, Serialize};
5use time::OffsetDateTime;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
8#[cfg_attr(feature = "ts", derive(ts_rs::TS))]
9#[serde(rename_all = "snake_case")]
10pub enum AccountStatus {
11 Active,
12 Expired,
14 Disconnected,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19#[cfg_attr(feature = "ts", derive(ts_rs::TS))]
20pub struct Account {
21 pub id: AccountId,
22 pub connector: ConnectorId,
23 pub display_name: String,
25 pub status: AccountStatus,
26 #[serde(with = "time::serde::rfc3339")]
27 #[cfg_attr(feature = "ts", ts(type = "string"))]
28 pub connected_at: OffsetDateTime,
29}
30
31impl Account {
32 pub fn is_usable(&self) -> bool {
33 matches!(self.status, AccountStatus::Active)
34 }
35}