pub trait DatabaseAdapter:
Send
+ Sync
+ 'static {
type User: AuthUser;
type Session: AuthSession;
type Account: AuthAccount;
type Organization: AuthOrganization;
type Member: AuthMember;
type Invitation: AuthInvitation;
type Verification: AuthVerification;
Show 43 methods
// Required methods
fn create_user<'life0, 'async_trait>(
&'life0 self,
user: CreateUser,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::User>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_user_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::User>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn get_user_by_email<'life0, 'life1, 'async_trait>(
&'life0 self,
email: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::User>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn get_user_by_username<'life0, 'life1, 'async_trait>(
&'life0 self,
username: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::User>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn update_user<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
update: UpdateUser,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::User>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_user<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_session<'life0, 'async_trait>(
&'life0 self,
session: CreateSession,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Session>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_session<'life0, 'life1, 'async_trait>(
&'life0 self,
token: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Session>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn get_user_sessions<'life0, 'life1, 'async_trait>(
&'life0 self,
user_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Vec<Self::Session>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn update_session_expiry<'life0, 'life1, 'async_trait>(
&'life0 self,
token: &'life1 str,
expires_at: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_session<'life0, 'life1, 'async_trait>(
&'life0 self,
token: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_user_sessions<'life0, 'life1, 'async_trait>(
&'life0 self,
user_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_expired_sessions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = AuthResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn create_account<'life0, 'async_trait>(
&'life0 self,
account: CreateAccount,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Account>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_account<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
provider: &'life1 str,
provider_account_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Account>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn get_user_accounts<'life0, 'life1, 'async_trait>(
&'life0 self,
user_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Vec<Self::Account>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_account<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_verification<'life0, 'async_trait>(
&'life0 self,
verification: CreateVerification,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Verification>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_verification<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
identifier: &'life1 str,
value: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Verification>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn get_verification_by_value<'life0, 'life1, 'async_trait>(
&'life0 self,
value: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Verification>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_verification<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_expired_verifications<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = AuthResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn create_organization<'life0, 'async_trait>(
&'life0 self,
org: CreateOrganization,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Organization>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_organization_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Organization>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn get_organization_by_slug<'life0, 'life1, 'async_trait>(
&'life0 self,
slug: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Organization>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn update_organization<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
update: UpdateOrganization,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Organization>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_organization<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn list_user_organizations<'life0, 'life1, 'async_trait>(
&'life0 self,
user_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Vec<Self::Organization>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_member<'life0, 'async_trait>(
&'life0 self,
member: CreateMember,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Member>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_member<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
organization_id: &'life1 str,
user_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Member>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn get_member_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Member>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn update_member_role<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
member_id: &'life1 str,
role: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Member>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn delete_member<'life0, 'life1, 'async_trait>(
&'life0 self,
member_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn list_organization_members<'life0, 'life1, 'async_trait>(
&'life0 self,
organization_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Vec<Self::Member>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn count_organization_members<'life0, 'life1, 'async_trait>(
&'life0 self,
organization_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn count_organization_owners<'life0, 'life1, 'async_trait>(
&'life0 self,
organization_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_invitation<'life0, 'async_trait>(
&'life0 self,
invitation: CreateInvitation,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Invitation>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_invitation_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Invitation>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn get_pending_invitation<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
organization_id: &'life1 str,
email: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<Self::Invitation>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn update_invitation_status<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
status: InvitationStatus,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Invitation>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn list_organization_invitations<'life0, 'life1, 'async_trait>(
&'life0 self,
organization_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Vec<Self::Invitation>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn list_user_invitations<'life0, 'life1, 'async_trait>(
&'life0 self,
email: &'life1 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Vec<Self::Invitation>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn update_session_active_organization<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
token: &'life1 str,
organization_id: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = AuthResult<Self::Session>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
}Expand description
Database adapter trait for persistence.
Associated types allow users to define their own entity structs.
Use the default types (User, Session, etc.) or implement entity traits
on custom structs via #[derive(AuthUser)] etc.