Skip to main content

alibi_sqlx/store/entities/
oauth_client_resource.rs

1use crate::{JsonMetadata, SqlxModel};
2use chrono::{DateTime, Utc};
3#[derive(
4    Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize, sqlx::FromRow, SqlxModel,
5)]
6#[auth(table = "oauthClientResource")]
7pub struct Model {
8    pub id: String,
9    #[sqlx(rename = "clientId")]
10    #[serde(rename = "clientId")]
11    pub client_id: String,
12    #[sqlx(rename = "resourceId")]
13    #[serde(rename = "resourceId")]
14    pub resource_id: String,
15    #[serde(rename = "metadata")]
16    pub metadata: Option<JsonMetadata>,
17    #[sqlx(rename = "createdAt")]
18    #[serde(rename = "createdAt")]
19    pub created_at: Option<DateTime<Utc>>,
20}
21
22impl TryFrom<Model> for alibi_core::store::OAuthClientResource {
23    type Error = alibi_core::AuthError;
24    fn try_from(model: Model) -> Result<Self, Self::Error> {
25        Ok(Self {
26            id: model.id,
27            client_id: model.client_id,
28            resource_id: model.resource_id,
29            metadata: model
30                .metadata
31                .map_or(serde_json::Value::Null, |value| (*value).clone()),
32            created_at: model.created_at,
33        })
34    }
35}