use crate::JsonMetadata;
use sea_orm::entity::prelude::*;
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize, DeriveEntityModel)]
#[sea_orm(table_name = "oauthClientResource")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
pub id: String,
#[sea_orm(column_name = "clientId")]
#[serde(rename = "clientId")]
pub client_id: String,
#[sea_orm(column_name = "resourceId")]
#[serde(rename = "resourceId")]
pub resource_id: String,
#[serde(rename = "metadata")]
pub metadata: Option<JsonMetadata>,
#[sea_orm(column_name = "createdAt")]
#[serde(rename = "createdAt")]
pub created_at: Option<DateTimeUtc>,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}
impl ActiveModelBehavior for ActiveModel {}
impl TryFrom<Model> for alibi_core::store::OAuthClientResource {
type Error = alibi_core::AuthError;
fn try_from(model: Model) -> Result<Self, Self::Error> {
Ok(Self {
id: model.id,
client_id: model.client_id,
resource_id: model.resource_id,
metadata: model
.metadata
.map_or(serde_json::Value::Null, |value| (*value).clone()),
created_at: model.created_at,
})
}
}