user_client_consent_repository.rs
1 use sqlx::Transaction; 2 use uuid::Uuid; 3 4 use crate::{ 5 models::{oauth_client::OauthClient, user_client_consent::UserClientConsent}, 6 util::accounts_error::AccountsResult, 7 }; 8 9 use super::DB; 10 11 pub async fn insert( 12 transaction: &mut Transaction<'_, DB>, 13 client: &OauthClient, 14 account_id: &Uuid, 15 ) -> AccountsResult<UserClientConsent> { 16 Ok(sqlx::query_as!( 17 UserClientConsent, 18 " 19 INSERT INTO user_client_consent (client_id, account_id) 20 VALUES ($1, $2) 21 RETURNING id, client_id, account_id, consented_on 22 ", 23 client.id, 24 account_id, 25 ) 26 .fetch_one(&mut **transaction) 27 .await?) 28 } 29 30 pub async fn get_by_client_and_account( 31 transaction: &mut Transaction<'_, DB>, 32 client: &OauthClient, 33 account_id: &Uuid, 34 ) -> AccountsResult<Option<UserClientConsent>> { 35 Ok(sqlx::query_as!( 36 UserClientConsent, 37 " 38 SELECT id, client_id, account_id, consented_on 39 FROM user_client_consent 40 WHERE client_id = $1 AND account_id = $2 41 ", 42 client.id, 43 account_id, 44 ) 45 .fetch_optional(&mut **transaction) 46 .await?) 47 } 48 49 pub async fn delete_by_client( 50 transaction: &mut Transaction<'_, DB>, 51 client: &OauthClient, 52 ) -> AccountsResult<()> { 53 sqlx::query_as!( 54 UserClientConsent, 55 " 56 DELETE 57 FROM user_client_consent 58 WHERE client_id = $1 59 ", 60 client.id 61 ) 62 .execute(&mut **transaction) 63 .await?; 64 65 Ok(()) 66 }