pub struct SqliteUserStore { /* private fields */ }Implementations§
Source§impl SqliteUserStore
impl SqliteUserStore
pub fn new(pool: SqlitePool) -> Self
Trait Implementations§
Source§impl Clone for SqliteUserStore
impl Clone for SqliteUserStore
Source§impl UserStore for SqliteUserStore
impl UserStore for SqliteUserStore
Source§fn create_user<'life0, 'async_trait>(
&'life0 self,
new_user: NewUser,
) -> Pin<Box<dyn Future<Output = Result<User, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_user<'life0, 'async_trait>(
&'life0 self,
new_user: NewUser,
) -> Pin<Box<dyn Future<Output = Result<User, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create an account, assigning a fresh
UserId, and return it.Source§fn find_by_email_or_username<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<User>, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn find_by_email_or_username<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<User>, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Resolve an account by an identifier matching either its
email or its
username, mirroring SynBioHub’s login lookup. None when neither
matches.Source§fn get_by_id<'life0, 'async_trait>(
&'life0 self,
id: UserId,
) -> Pin<Box<dyn Future<Output = Result<Option<User>, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_by_id<'life0, 'async_trait>(
&'life0 self,
id: UserId,
) -> Pin<Box<dyn Future<Output = Result<Option<User>, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Fetch an account by id.
None when no such account exists.Source§fn list_users<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<User>, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_users<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<User>, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Every account ordered by username. Administrator projections use this
instead of backend-specific SQL or column-family scans.
Source§fn page_users<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 UserListQuery,
) -> Pin<Box<dyn Future<Output = Result<UserPage, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn page_users<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 UserListQuery,
) -> Pin<Box<dyn Future<Output = Result<UserPage, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Filter and page accounts inside the backend. Implementations should not
materialize the complete account table merely to serve one Admin page.
Source§fn update_user<'life0, 'life1, 'async_trait>(
&'life0 self,
user: &'life1 User,
) -> Pin<Box<dyn Future<Output = Result<User, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_user<'life0, 'life1, 'async_trait>(
&'life0 self,
user: &'life1 User,
) -> Pin<Box<dyn Future<Output = Result<User, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Persist the mutable profile fields (
name, email, affiliation, and
the membership flags) of user, returning the stored account.Source§fn set_sole_admin<'life0, 'async_trait>(
&'life0 self,
id: UserId,
) -> Pin<Box<dyn Future<Output = Result<(), DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn set_sole_admin<'life0, 'async_trait>(
&'life0 self,
id: UserId,
) -> Pin<Box<dyn Future<Output = Result<(), DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Atomically make
id the only administrator account. Read moreSource§fn set_password_hash<'life0, 'life1, 'async_trait>(
&'life0 self,
id: UserId,
password_hash: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_password_hash<'life0, 'life1, 'async_trait>(
&'life0 self,
id: UserId,
password_hash: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Replace an account’s stored password hash, e.g. transparent rehashing of
a legacy digest to argon2 on a successful login.
Source§fn set_reset_link<'life0, 'life1, 'async_trait>(
&'life0 self,
id: UserId,
link: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<(), DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_reset_link<'life0, 'life1, 'async_trait>(
&'life0 self,
id: UserId,
link: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<(), DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Set (
Some) or clear (None) an account’s outstanding reset link.Source§fn consume_reset_link<'life0, 'life1, 'async_trait>(
&'life0 self,
link: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<User>, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn consume_reset_link<'life0, 'life1, 'async_trait>(
&'life0 self,
link: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<User>, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Atomically claim the account whose outstanding reset link equals
link,
clearing the link so it cannot be reused. Returns the claimed account, or
None when no account carries that link.Source§fn delete_user<'life0, 'async_trait>(
&'life0 self,
id: UserId,
) -> Pin<Box<dyn Future<Output = Result<bool, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_user<'life0, 'async_trait>(
&'life0 self,
id: UserId,
) -> Pin<Box<dyn Future<Output = Result<bool, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete the account with
id, returning whether a row was removed
(false when no such account exists).Source§fn any_admin<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<bool, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn any_admin<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<bool, DomainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Whether any administrator account exists. First-launch setup uses this to
decide whether an instance still needs its initial administrator.
Auto Trait Implementations§
impl !RefUnwindSafe for SqliteUserStore
impl !UnwindSafe for SqliteUserStore
impl Freeze for SqliteUserStore
impl Send for SqliteUserStore
impl Sync for SqliteUserStore
impl Unpin for SqliteUserStore
impl UnsafeUnpin for SqliteUserStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more