41 lines
1.2 KiB
Rust
41 lines
1.2 KiB
Rust
use crate::db::error::{BoxedError, UserCreationError};
|
|
use crate::db::{Database, User, UserRef};
|
|
|
|
impl<D: DatabaseInterface> DatabaseInterface for Database<D> {
|
|
async fn get_user(&self, user: &UserRef) -> Result<Option<User>, BoxedError> {
|
|
self.inner.read().await.get_user(user).await
|
|
}
|
|
|
|
async fn create_user(
|
|
&mut self,
|
|
user: User,
|
|
) -> Result<Result<(), UserCreationError>, BoxedError> {
|
|
self.inner.write().await.create_user(user).await
|
|
}
|
|
|
|
async fn try_create_user(
|
|
&mut self,
|
|
new_user: User,
|
|
current_user: &User,
|
|
) -> Result<Result<(), UserCreationError>, BoxedError> {
|
|
self.inner
|
|
.write()
|
|
.await
|
|
.try_create_user(new_user, current_user)
|
|
.await
|
|
}
|
|
}
|
|
|
|
pub trait DatabaseInterface: Clone + Send + Sync + 'static {
|
|
async fn get_user(&self, user: &UserRef) -> Result<Option<User>, BoxedError>;
|
|
async fn create_user(
|
|
&mut self,
|
|
user: User,
|
|
) -> Result<Result<(), UserCreationError>, BoxedError>;
|
|
#[expect(unused)]
|
|
async fn try_create_user(
|
|
&mut self,
|
|
new_user: User,
|
|
current_user: &User,
|
|
) -> Result<Result<(), UserCreationError>, BoxedError>;
|
|
}
|