use serde::{Deserialize, Serialize};
use crate::Timestamp;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
#[cfg_attr(feature = "typescript", ts(export_to = "controller-api.ts"))]
pub struct ApiKey {
pub id: i64,
pub name: String,
pub ending: String,
pub created_at: Timestamp,
pub last_used_at: Option<Timestamp>,
}
impl ApiKey {
pub const PREFIX: &str = "dvm_";
pub fn masked(&self) -> String {
format!("{}…{}", Self::PREFIX, self.ending)
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
#[cfg_attr(feature = "typescript", ts(export_to = "controller-api.ts"))]
pub struct NewApiKey {
pub name: String,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
#[cfg_attr(feature = "typescript", ts(export_to = "controller-api.ts"))]
pub struct CreatedApiKey {
pub key: ApiKey,
pub secret: String,
}