feat: implement extraction management features including creation, loading states, and filtering
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user