feat: Implement pagination for user media retrieval and update related structures

This commit is contained in:
2025-11-15 18:06:09 +01:00
parent dd10211c63
commit ccb9f09d4a
8 changed files with 144 additions and 47 deletions

View File

@@ -12,7 +12,7 @@ use libertas_core::{
media_utils::{extract_exif_data_from_bytes, get_storage_path_and_date},
models::{Media, MediaBundle},
repositories::{MediaMetadataRepository, MediaRepository, UserRepository},
schema::{ListMediaOptions, UploadMediaData},
schema::{ListMediaOptions, PaginatedResponse, UploadMediaData},
services::{AuthorizationService, MediaService},
};
use serde_json::json;
@@ -109,8 +109,14 @@ impl MediaService for MediaServiceImpl {
&self,
user_id: Uuid,
options: ListMediaOptions,
) -> CoreResult<Vec<Media>> {
self.repo.list_by_user(user_id, &options).await
) -> CoreResult<PaginatedResponse<Media>> {
let (data, total_items) = self.repo.list_by_user(user_id, &options).await?;
let pagination = options.pagination.unwrap();
let response = PaginatedResponse::new(data, pagination.page, pagination.limit, total_items);
Ok(response)
}
async fn get_media_filepath(&self, id: Uuid, user_id: Option<Uuid>) -> CoreResult<String> {