Add user_by_discord_user_id function to repository

This commit is contained in:
2025-01-29 23:17:45 +00:00
parent a719b143de
commit fc09d267e5
4 changed files with 38 additions and 0 deletions

View File

@@ -6,6 +6,8 @@ pub trait UserRepository {
async fn user(&mut self, id: i32) -> Result<Option<User>, RepositoryError<Self::BackendError>>;
async fn user_by_discord_user_id(&mut self, id: u64) -> Result<Option<User>, RepositoryError<Self::BackendError>>;
async fn insert_user(&mut self, new_user: NewUser) -> Result<User, RepositoryError<Self::BackendError>>;
async fn update_user(&mut self, user: User) -> Result<Option<User>, RepositoryError<Self::BackendError>>;

View File

@@ -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<Option<User>, RepositoryError<Self::BackendError>> {
let model_id = id as i64;
users::dsl::users
.filter(users::dsl::discord_user_id.eq(model_id))
.first::<ModelUser>(&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<User, RepositoryError<Self::BackendError>> {
let model_new_user = ModelNewUser::from(new_user);

View File

@@ -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<Option<User>, RepositoryError<Self::BackendError>> {
let model_id = id as i64;
users::dsl::users
.filter(users::dsl::discord_user_id.eq(model_id))
.first::<ModelUser>(&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<User, RepositoryError<Self::BackendError>> {
let model_new_user = ModelNewUser::from(new_user);

View File

@@ -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<Option<User>, RepositoryError<Self::BackendError>> {
let model_id = id as i64;
users::dsl::users
.filter(users::dsl::discord_user_id.eq(model_id))
.first::<ModelUser>(&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<User, RepositoryError<Self::BackendError>> {
let model_new_user = ModelNewUser::from(new_user);