use diesel::prelude::*;
use crate::biome::oauth::store::{
diesel::{models::OAuthUserModel, schema::oauth_users},
OAuthUser, OAuthUserSessionStoreError,
};
use super::OAuthUserSessionStoreOperations;
pub trait OAuthUserSessionStoreGetUser {
fn get_user(&self, subject: &str) -> Result<Option<OAuthUser>, OAuthUserSessionStoreError>;
}
impl<'a, C> OAuthUserSessionStoreGetUser for OAuthUserSessionStoreOperations<'a, C>
where
C: diesel::Connection,
String: diesel::deserialize::FromSql<diesel::sql_types::Text, C::Backend>,
{
fn get_user(&self, subject: &str) -> Result<Option<OAuthUser>, OAuthUserSessionStoreError> {
Ok(oauth_users::table
.find(subject)
.first::<OAuthUserModel>(self.conn)
.optional()?
.map(OAuthUser::from))
}
}