From fc09d267e5e67181640af16e14293bd16b15a96a Mon Sep 17 00:00:00 2001 From: Kappeh Date: Wed, 29 Jan 2025 23:17:45 +0000 Subject: [PATCH] Add user_by_discord_user_id function to repository --- cipher_core/src/repository/user_repository.rs | 2 ++ .../src/mysql/repository/user_repository.rs | 12 ++++++++++++ .../src/postgres/repository/user_repository.rs | 12 ++++++++++++ .../src/sqlite/repository/user_repository.rs | 12 ++++++++++++ 4 files changed, 38 insertions(+) diff --git a/cipher_core/src/repository/user_repository.rs b/cipher_core/src/repository/user_repository.rs index 00f3597..f018445 100644 --- a/cipher_core/src/repository/user_repository.rs +++ b/cipher_core/src/repository/user_repository.rs @@ -6,6 +6,8 @@ pub trait UserRepository { async fn user(&mut self, id: i32) -> Result, RepositoryError>; + async fn user_by_discord_user_id(&mut self, id: u64) -> Result, RepositoryError>; + async fn insert_user(&mut self, new_user: NewUser) -> Result>; async fn update_user(&mut self, user: User) -> Result, RepositoryError>; diff --git a/cipher_database/src/mysql/repository/user_repository.rs b/cipher_database/src/mysql/repository/user_repository.rs index 2bc4d4f..e09458d 100644 --- a/cipher_database/src/mysql/repository/user_repository.rs +++ b/cipher_database/src/mysql/repository/user_repository.rs @@ -26,6 +26,18 @@ impl UserRepository for MysqlRepository<'_> { .map_err(|err| RepositoryError(BackendError::from(err))) } + async fn user_by_discord_user_id(&mut self, id: u64) -> Result, RepositoryError> { + let model_id = id as i64; + + users::dsl::users + .filter(users::dsl::discord_user_id.eq(model_id)) + .first::(&mut self.conn) + .await + .optional() + .map(|option| option.map(User::from)) + .map_err(|err| RepositoryError(BackendError::from(err))) + } + async fn insert_user(&mut self, new_user: NewUser) -> Result> { let model_new_user = ModelNewUser::from(new_user); diff --git a/cipher_database/src/postgres/repository/user_repository.rs b/cipher_database/src/postgres/repository/user_repository.rs index fed0025..b99735d 100644 --- a/cipher_database/src/postgres/repository/user_repository.rs +++ b/cipher_database/src/postgres/repository/user_repository.rs @@ -26,6 +26,18 @@ impl UserRepository for PostgresRepository<'_> { .map_err(|err| RepositoryError(BackendError::from(err))) } + async fn user_by_discord_user_id(&mut self, id: u64) -> Result, RepositoryError> { + let model_id = id as i64; + + users::dsl::users + .filter(users::dsl::discord_user_id.eq(model_id)) + .first::(&mut self.conn) + .await + .optional() + .map(|option| option.map(User::from)) + .map_err(|err| RepositoryError(BackendError::from(err))) + } + async fn insert_user(&mut self, new_user: NewUser) -> Result> { let model_new_user = ModelNewUser::from(new_user); diff --git a/cipher_database/src/sqlite/repository/user_repository.rs b/cipher_database/src/sqlite/repository/user_repository.rs index b591fce..f244d51 100644 --- a/cipher_database/src/sqlite/repository/user_repository.rs +++ b/cipher_database/src/sqlite/repository/user_repository.rs @@ -26,6 +26,18 @@ impl UserRepository for SqliteRepository<'_> { .map_err(|err| RepositoryError(BackendError::from(err))) } + async fn user_by_discord_user_id(&mut self, id: u64) -> Result, RepositoryError> { + let model_id = id as i64; + + users::dsl::users + .filter(users::dsl::discord_user_id.eq(model_id)) + .first::(&mut self.conn) + .await + .optional() + .map(|option| option.map(User::from)) + .map_err(|err| RepositoryError(BackendError::from(err))) + } + async fn insert_user(&mut self, new_user: NewUser) -> Result> { let model_new_user = ModelNewUser::from(new_user);