feat: implement media listing with sorting and filtering options

This commit is contained in:
2025-11-04 05:57:04 +01:00
parent ab8eeb882e
commit eaf4c90fa8
18 changed files with 238 additions and 39 deletions

View File

@@ -5,8 +5,7 @@ use crate::{
error::CoreResult,
models::{Album, Media, User},
schema::{
AddMediaToAlbumData, CreateAlbumData, CreateUserData, LoginUserData, ShareAlbumData,
UpdateAlbumData, UploadMediaData,
AddMediaToAlbumData, CreateAlbumData, CreateUserData, ListMediaOptions, LoginUserData, ShareAlbumData, UpdateAlbumData, UploadMediaData
},
};
@@ -14,7 +13,7 @@ use crate::{
pub trait MediaService: Send + Sync {
async fn upload_media(&self, data: UploadMediaData<'_>) -> CoreResult<Media>;
async fn get_media_details(&self, id: Uuid, user_id: Uuid) -> CoreResult<Media>;
async fn list_user_media(&self, user_id: Uuid) -> CoreResult<Vec<Media>>;
async fn list_user_media(&self, user_id: Uuid, options: ListMediaOptions) -> CoreResult<Vec<Media>>;
async fn get_media_filepath(&self, id: Uuid, user_id: Uuid) -> CoreResult<String>;
async fn delete_media(&self, id: Uuid, user_id: Uuid) -> CoreResult<()>;
}