feat: implement album sharing functionality with permissions management

This commit is contained in:
2025-11-02 17:39:11 +01:00
parent f49d9179f5
commit a36b59a5fb
11 changed files with 263 additions and 31 deletions

View File

@@ -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>;
}