feat: implement extraction management features including creation, loading states, and filtering

This commit is contained in:
JSC
2025-08-17 01:27:51 +02:00
parent 0024f1d647
commit ed888dd8d1
7 changed files with 604 additions and 263 deletions

View File

@@ -23,6 +23,17 @@ export interface GetExtractionsResponse {
extractions: ExtractionInfo[]
}
export type ExtractionSortField = 'title' | 'status' | 'service' | 'created_at' | 'updated_at'
export type ExtractionSortOrder = 'asc' | 'desc'
export type ExtractionStatus = 'pending' | 'processing' | 'completed' | 'failed'
export interface GetExtractionsParams {
search?: string
sort_by?: ExtractionSortField
sort_order?: ExtractionSortOrder
status_filter?: ExtractionStatus
}
export class ExtractionsService {
/**
* Create a new extraction job
@@ -47,10 +58,26 @@ export class ExtractionsService {
/**
* Get user's extractions
*/
async getUserExtractions(): Promise<ExtractionInfo[]> {
const response = await apiClient.get<GetExtractionsResponse>(
'/api/v1/extractions/',
)
async getUserExtractions(params?: GetExtractionsParams): Promise<ExtractionInfo[]> {
const searchParams = new URLSearchParams()
if (params?.search) {
searchParams.append('search', params.search)
}
if (params?.sort_by) {
searchParams.append('sort_by', params.sort_by)
}
if (params?.sort_order) {
searchParams.append('sort_order', params.sort_order)
}
if (params?.status_filter) {
searchParams.append('status_filter', params.status_filter)
}
const queryString = searchParams.toString()
const url = queryString ? `/api/v1/extractions/?${queryString}` : '/api/v1/extractions/'
const response = await apiClient.get<GetExtractionsResponse>(url)
return response.extractions
}
}