fistinc-auth 0.1.0

Paging types for Fist Inc bank
Documentation
use async_trait::async_trait;
use email_address::EmailAddress;
use fistinc_errors::RepositoryResult;
use fistinc_paging::{Paging, QueryParams};
use phonenumber::PhoneNumber;
use uuid::Uuid;

use crate::domain::entity::User;

#[async_trait]
pub trait UserRepository: Send + Sync {
    async fn find_all(
        &self, params: &dyn QueryParams,
    ) -> RepositoryResult<Paging<User>>;
    async fn find(&self, user_id: Uuid) -> RepositoryResult<Option<User>>;
    async fn find_by_email(&self, email: &EmailAddress) -> RepositoryResult<Option<User>>;
    async fn find_by_phone(&self, phone: &PhoneNumber) -> RepositoryResult<Option<User>>;
    async fn create(&self, user: &User) -> RepositoryResult<()>;
    async fn update(&self, user: &User) -> RepositoryResult<()>;
    async fn delete(&self, user_id: Uuid) -> RepositoryResult<()>;
}