use diesel::{dsl::insert_into, prelude::*};
use crate::oauth::store::{
diesel::{models::OAuthInflightRequest, schema::oauth_inflight_request},
InflightOAuthRequestStoreError,
};
use super::InflightOAuthRequestOperations;
pub(in crate::oauth::store::diesel) trait InflightOAuthRequestStoreInsertRequestOperation {
fn insert_request(
&self,
request: OAuthInflightRequest,
) -> Result<(), InflightOAuthRequestStoreError>;
}
#[cfg(feature = "sqlite")]
impl<'a> InflightOAuthRequestStoreInsertRequestOperation
for InflightOAuthRequestOperations<'a, diesel::sqlite::SqliteConnection>
{
fn insert_request(
&self,
request: OAuthInflightRequest,
) -> Result<(), InflightOAuthRequestStoreError> {
insert_into(oauth_inflight_request::table)
.values(request)
.execute(self.conn)
.map(|_| ())
.map_err(InflightOAuthRequestStoreError::from)
}
}
#[cfg(feature = "postgres")]
impl<'a> InflightOAuthRequestStoreInsertRequestOperation
for InflightOAuthRequestOperations<'a, diesel::pg::PgConnection>
{
fn insert_request(
&self,
request: OAuthInflightRequest,
) -> Result<(), InflightOAuthRequestStoreError> {
insert_into(oauth_inflight_request::table)
.values(request)
.execute(self.conn)
.map(|_| ())
.map_err(InflightOAuthRequestStoreError::from)
}
}