feat: implement album sharing functionality with permissions management
This commit is contained in:
@@ -3,7 +3,7 @@ use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
error::CoreResult,
|
||||
models::{Album, Media, User},
|
||||
models::{Album, AlbumPermission, Media, User},
|
||||
};
|
||||
|
||||
#[async_trait]
|
||||
@@ -37,3 +37,21 @@ pub trait AlbumRepository: Send + Sync {
|
||||
async fn list_by_user(&self, user_id: Uuid) -> CoreResult<Vec<Album>>;
|
||||
async fn add_media_to_album(&self, album_id: Uuid, media_ids: &[Uuid]) -> CoreResult<()>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait AlbumShareRepository: Send + Sync {
|
||||
async fn create_or_update_share(
|
||||
&self,
|
||||
album_id: Uuid,
|
||||
user_id: Uuid,
|
||||
permission: AlbumPermission,
|
||||
) -> CoreResult<()>;
|
||||
|
||||
async fn get_user_permission(
|
||||
&self,
|
||||
album_id: Uuid,
|
||||
user_id: Uuid,
|
||||
) -> CoreResult<Option<AlbumPermission>>;
|
||||
|
||||
async fn is_media_in_shared_album(&self, media_id: Uuid, user_id: Uuid) -> CoreResult<bool>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user