Skip to main content

alibi_sqlx/store/entities/
passkey.rs

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