2025-04-13 01:04:04 +02:00
|
|
|
use async_trait::async_trait;
|
|
|
|
|
use std::result::Result;
|
2026-02-14 01:29:34 +01:00
|
|
|
use uuid::Uuid;
|
2025-04-13 01:04:04 +02:00
|
|
|
|
|
|
|
|
use crate::common::errors::DomainError;
|
|
|
|
|
use crate::domain::entities::contact::AddressBook;
|
|
|
|
|
|
|
|
|
|
pub type AddressBookRepositoryResult<T> = Result<T, DomainError>;
|
|
|
|
|
|
|
|
|
|
#[async_trait]
|
|
|
|
|
pub trait AddressBookRepository: Send + Sync + 'static {
|
2026-02-14 01:29:34 +01:00
|
|
|
async fn create_address_book(
|
|
|
|
|
&self,
|
|
|
|
|
address_book: AddressBook,
|
|
|
|
|
) -> AddressBookRepositoryResult<AddressBook>;
|
|
|
|
|
async fn update_address_book(
|
|
|
|
|
&self,
|
|
|
|
|
address_book: AddressBook,
|
|
|
|
|
) -> AddressBookRepositoryResult<AddressBook>;
|
2025-04-13 01:04:04 +02:00
|
|
|
async fn delete_address_book(&self, id: &Uuid) -> AddressBookRepositoryResult<()>;
|
2026-02-14 01:29:34 +01:00
|
|
|
async fn get_address_book_by_id(
|
|
|
|
|
&self,
|
|
|
|
|
id: &Uuid,
|
|
|
|
|
) -> AddressBookRepositoryResult<Option<AddressBook>>;
|
|
|
|
|
async fn get_address_books_by_owner(
|
|
|
|
|
&self,
|
|
|
|
|
owner_id: &str,
|
|
|
|
|
) -> AddressBookRepositoryResult<Vec<AddressBook>>;
|
|
|
|
|
async fn get_shared_address_books(
|
|
|
|
|
&self,
|
|
|
|
|
user_id: &str,
|
|
|
|
|
) -> AddressBookRepositoryResult<Vec<AddressBook>>;
|
2025-04-13 01:04:04 +02:00
|
|
|
async fn get_public_address_books(&self) -> AddressBookRepositoryResult<Vec<AddressBook>>;
|
2026-02-14 01:29:34 +01:00
|
|
|
async fn share_address_book(
|
|
|
|
|
&self,
|
|
|
|
|
address_book_id: &Uuid,
|
|
|
|
|
user_id: &str,
|
|
|
|
|
can_write: bool,
|
|
|
|
|
) -> AddressBookRepositoryResult<()>;
|
|
|
|
|
async fn unshare_address_book(
|
|
|
|
|
&self,
|
|
|
|
|
address_book_id: &Uuid,
|
|
|
|
|
user_id: &str,
|
|
|
|
|
) -> AddressBookRepositoryResult<()>;
|
|
|
|
|
async fn get_address_book_shares(
|
|
|
|
|
&self,
|
|
|
|
|
address_book_id: &Uuid,
|
|
|
|
|
) -> AddressBookRepositoryResult<Vec<(String, bool)>>;
|
|
|
|
|
}
|