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 = "passkeys")]
7pub struct Model {
8    pub id: String,
9    pub name: Option<String>,
10    pub public_key: String,
11    pub user_id: String,
12    pub credential_id: String,
13    pub counter: i64,
14    pub device_type: String,
15    pub backed_up: bool,
16    pub transports: Option<String>,
17    pub credential: String,
18    pub aaguid: Option<String>,
19    pub created_at: DateTime<Utc>,
20    pub updated_at: DateTime<Utc>,
21}
22
23impl From<&Model> for Passkey {
24    fn from(model: &Model) -> Self {
25        Self {
26            id: model.id.clone(),
27            name: model.name.clone(),
28            public_key: model.public_key.clone(),
29            user_id: model.user_id.clone(),
30            credential_id: model.credential_id.clone(),
31            counter: u64::try_from(model.counter).unwrap_or_default(),
32            device_type: model.device_type.clone(),
33            backed_up: model.backed_up,
34            transports: model.transports.clone(),
35            created_at: model.created_at,
36            updated_at: model.updated_at,
37            aaguid: model.aaguid.clone(),
38            credential: model.credential.clone(),
39        }
40    }
41}