alibi_core/wire/
verification.rs1use crate::AuthVerification;
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4use std::borrow::Cow;
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7pub struct VerificationView {
8 pub id: String,
9 pub identifier: String,
10 pub value: String,
11 #[serde(rename = "expiresAt")]
12 #[serde(serialize_with = "crate::utils::datetime::serialize")]
13 pub expires_at: DateTime<Utc>,
14 #[serde(rename = "createdAt")]
15 #[serde(serialize_with = "crate::utils::datetime::serialize")]
16 pub created_at: DateTime<Utc>,
17 #[serde(rename = "updatedAt")]
18 #[serde(serialize_with = "crate::utils::datetime::serialize")]
19 pub updated_at: DateTime<Utc>,
20}
21
22impl<T: AuthVerification> From<&T> for VerificationView {
23 fn from(verification: &T) -> Self {
24 Self {
25 id: verification.id().into_owned(),
26 identifier: verification.identifier().to_owned(),
27 value: verification.value().to_owned(),
28 expires_at: verification.expires_at(),
29 created_at: verification.created_at(),
30 updated_at: verification.updated_at(),
31 }
32 }
33}
34
35impl AuthVerification for VerificationView {
36 fn id(&self) -> Cow<'_, str> {
37 Cow::Borrowed(&self.id)
38 }
39 fn identifier(&self) -> &str {
40 &self.identifier
41 }
42 fn value(&self) -> &str {
43 &self.value
44 }
45 fn expires_at(&self) -> DateTime<Utc> {
46 self.expires_at
47 }
48 fn created_at(&self) -> DateTime<Utc> {
49 self.created_at
50 }
51 fn updated_at(&self) -> DateTime<Utc> {
52 self.updated_at
53 }
54}