oauth_client_repository.rs
1 use sqlx::{types::Uuid, Transaction}; 2 3 use crate::{models::oauth_client::OauthClient, util::accounts_error::AccountsResult}; 4 5 use super::DB; 6 7 pub async fn insert( 8 transaction: &mut Transaction<'_, DB>, 9 client_id: &String, 10 client_secret: &String, 11 client_name: &String, 12 redirect_uri: &String, 13 ) -> AccountsResult<OauthClient> { 14 Ok(sqlx::query_as!( 15 OauthClient, 16 " 17 INSERT INTO oauth_client (client_id, client_secret, client_name, redirect_uri) 18 VALUES ($1, $2, $3, $4) 19 RETURNING * 20 ", 21 client_id, 22 client_secret, 23 client_name, 24 redirect_uri 25 ) 26 .fetch_one(&mut **transaction) 27 .await?) 28 } 29 30 pub async fn get_all(transaction: &mut Transaction<'_, DB>) -> AccountsResult<Vec<OauthClient>> { 31 Ok(sqlx::query_as!( 32 OauthClient, 33 " 34 SELECT * 35 FROM oauth_client 36 " 37 ) 38 .fetch_all(&mut **transaction) 39 .await?) 40 } 41 42 pub async fn get_by_client_name( 43 transaction: &mut Transaction<'_, DB>, 44 client_name: String, 45 ) -> AccountsResult<Option<OauthClient>> { 46 Ok(sqlx::query_as!( 47 OauthClient, 48 " 49 SELECT * 50 FROM oauth_client 51 WHERE client_name=$1 52 ", 53 client_name 54 ) 55 .fetch_optional(&mut **transaction) 56 .await?) 57 } 58 59 pub async fn delete( 60 transaction: &mut Transaction<'_, DB>, 61 client: &OauthClient, 62 ) -> AccountsResult<Option<OauthClient>> { 63 Ok(sqlx::query_as!( 64 OauthClient, 65 " 66 DELETE 67 FROM oauth_client 68 WHERE id=$1 69 RETURNING * 70 ", 71 client.id 72 ) 73 .fetch_optional(&mut **transaction) 74 .await?) 75 } 76 77 pub async fn get_by_client_id( 78 transaction: &mut Transaction<'_, DB>, 79 client_id: &str, 80 ) -> AccountsResult<Option<OauthClient>> { 81 Ok(sqlx::query_as!( 82 OauthClient, 83 " 84 SELECT * 85 FROM oauth_client 86 WHERE client_id=$1 87 ", 88 client_id 89 ) 90 .fetch_optional(&mut **transaction) 91 .await?) 92 } 93 94 pub async fn find_by_id( 95 transaction: &mut Transaction<'_, DB>, 96 id: &Uuid, 97 ) -> AccountsResult<Option<OauthClient>> { 98 Ok(sqlx::query_as!( 99 OauthClient, 100 " 101 SELECT * 102 FROM oauth_client 103 WHERE id=$1 104 ", 105 id 106 ) 107 .fetch_optional(&mut **transaction) 108 .await?) 109 }