feat: implement pagination for extractions and playlists with updated API responses

This commit is contained in:
JSC
2025-08-17 11:22:02 +02:00
parent 04401092bb
commit 75ecd26e06
5 changed files with 277 additions and 25 deletions

View File

@@ -45,16 +45,24 @@ export interface GetPlaylistsParams {
search?: string
sort_by?: PlaylistSortField
sort_order?: SortOrder
page?: number
limit?: number
offset?: number
favorites_only?: boolean
}
export interface GetPlaylistsResponse {
playlists: Playlist[]
total: number
page: number
limit: number
total_pages: number
}
export class PlaylistsService {
/**
* Get all playlists with optional filtering, searching, and sorting
*/
async getPlaylists(params?: GetPlaylistsParams): Promise<Playlist[]> {
async getPlaylists(params?: GetPlaylistsParams): Promise<GetPlaylistsResponse> {
const searchParams = new URLSearchParams()
// Handle parameters
@@ -67,12 +75,12 @@ export class PlaylistsService {
if (params?.sort_order) {
searchParams.append('sort_order', params.sort_order)
}
if (params?.page) {
searchParams.append('page', params.page.toString())
}
if (params?.limit) {
searchParams.append('limit', params.limit.toString())
}
if (params?.offset) {
searchParams.append('offset', params.offset.toString())
}
if (params?.favorites_only) {
searchParams.append('favorites_only', 'true')
}
@@ -80,7 +88,7 @@ export class PlaylistsService {
const url = searchParams.toString()
? `/api/v1/playlists/?${searchParams.toString()}`
: '/api/v1/playlists/'
return apiClient.get<Playlist[]>(url)
return apiClient.get<GetPlaylistsResponse>(url)
}
/**