pub mod adapter;
pub mod oauth;
pub mod passkey;
pub mod password;
pub mod session;
pub mod token;
pub mod user;
pub use adapter::{
OAuthRepositoryAdapter, PasskeyRepositoryAdapter, PasswordRepositoryAdapter,
SessionRepositoryAdapter, TokenRepositoryAdapter, UserRepositoryAdapter,
};
pub use oauth::OAuthRepository;
pub use passkey::{PasskeyCredential, PasskeyRepository};
pub use password::PasswordRepository;
pub use session::SessionRepository;
pub use token::TokenRepository;
pub use user::UserRepository;
use async_trait::async_trait;
use crate::Error;
#[async_trait]
pub trait RepositoryProvider: Send + Sync + 'static {
type User: UserRepository;
type Session: SessionRepository;
type Password: PasswordRepository;
type OAuth: OAuthRepository;
type Passkey: PasskeyRepository;
type Token: TokenRepository;
fn user(&self) -> &Self::User;
fn session(&self) -> &Self::Session;
fn password(&self) -> &Self::Password;
fn oauth(&self) -> &Self::OAuth;
fn passkey(&self) -> &Self::Passkey;
fn token(&self) -> &Self::Token;
async fn migrate(&self) -> Result<(), Error>;
async fn health_check(&self) -> Result<(), Error>;
}