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

@@ -17,7 +17,7 @@ use crate::{
error::ApiError,
extractors::query_options::ApiListMediaOptions,
middleware::auth::{OptionalUserId, UserId},
schema::{MediaDetailsResponse, MediaResponse},
schema::{MediaDetailsResponse, MediaResponse, PaginatedResponse, map_paginated_response},
state::AppState,
};
@@ -138,12 +138,12 @@ async fn list_user_media(
State(state): State<AppState>,
UserId(user_id): UserId,
ApiListMediaOptions(options): ApiListMediaOptions,
) -> Result<Json<Vec<MediaResponse>>, ApiError> {
let media_list = state
) -> Result<Json<PaginatedResponse<MediaResponse>>, ApiError> {
let core_paginated_result = state
.media_service
.list_user_media(user_id, options)
.await?;
let response = media_list.into_iter().map(MediaResponse::from).collect();
Ok(Json(response))
let api_response = map_paginated_response(core_paginated_result);
Ok(Json(api_response))
}