Skip to main content

alibi_sqlx/store/entities/
passkey.rs

1use crate::SqlxModel;
2use alibi_core::Passkey;
3use chrono::{DateTime, Utc};
4
5#[derive(Clone, Debug, PartialEq, Eq, sqlx::FromRow, SqlxModel)]
6#[auth(table = "passkey")]
7pub struct Model {
8    pub id: String,
9    pub name: Option<String>,
10    #[sqlx(rename = "publicKey")]
11    pub public_key: String,
12    #[sqlx(rename = "userId")]
13    pub user_id: String,
14    #[sqlx(rename = "credentialID")]
15    pub credential_id: String,
16    pub counter: i64,
17    #[sqlx(rename = "deviceType")]
18    pub device_type: String,
19    #[sqlx(rename = "backedUp")]
20    pub backed_up: bool,
21    pub transports: Option<String>,
22    pub aaguid: Option<String>,
23    #[sqlx(rename = "createdAt")]
24    pub created_at: Option<DateTime<Utc>>,
25}
26
27impl From<&Model> for Passkey {
28    fn from(model: &Model) -> Self {
29        Self {
30            id: model.id.clone(),
31            name: model.name.clone(),
32            public_key: model.public_key.clone(),
33            user_id: model.user_id.clone(),
34            credential_id: model.credential_id.clone(),
35            counter: u64::try_from(model.counter).unwrap_or_default(),
36            device_type: model.device_type.clone(),
37            backed_up: model.backed_up,
38            transports: model.transports.clone(),
39            created_at: model.created_at,
40
41            aaguid: model.aaguid.clone(),
42        }
43    }
44}