45 lines
2.3 KiB
TypeScript
45 lines
2.3 KiB
TypeScript
import { apiGet, apiPost } from './client'
|
|
import type {
|
|
SegmentationListResponse,
|
|
SegmentationModelsResponse,
|
|
SegmentationQaRequest,
|
|
SegmentationQaResult,
|
|
SegmentationRunListResponse,
|
|
SegmentationRunRead,
|
|
SegmentationRunRequest,
|
|
SegmentationRunResponse,
|
|
} from '../../types'
|
|
|
|
function queryString(params: Record<string, string | number | null | undefined>): string {
|
|
const searchParams = new URLSearchParams()
|
|
Object.entries(params).forEach(([key, value]) => {
|
|
if (value !== null && value !== undefined && value !== '') {
|
|
searchParams.set(key, String(value))
|
|
}
|
|
})
|
|
const query = searchParams.toString()
|
|
return query ? `?${query}` : ''
|
|
}
|
|
|
|
export const segmentationApi = {
|
|
listModels: (): Promise<SegmentationModelsResponse> => apiGet<SegmentationModelsResponse>('/api/v1/segmentation/models'),
|
|
run: (payload: SegmentationRunRequest): Promise<SegmentationRunResponse> =>
|
|
apiPost<SegmentationRunResponse>(`/api/v1/segmentation/run?project_id=${encodeURIComponent(payload.project_id)}`, payload),
|
|
listRuns: (params: { project_id?: string | null; dataset_id?: string | null } = {}): Promise<SegmentationRunListResponse> =>
|
|
apiGet<SegmentationRunListResponse>(`/api/v1/segmentation/runs${queryString(params)}`),
|
|
getRun: (analysisRunId: string): Promise<SegmentationRunRead> =>
|
|
apiGet<SegmentationRunRead>(`/api/v1/segmentation/runs/${analysisRunId}`),
|
|
listSegmentations: (
|
|
analysisRunId: string,
|
|
params: { project_id: string; dataset_id?: string | null; class_name?: string | null; min_confidence?: number | null },
|
|
): Promise<SegmentationListResponse> =>
|
|
apiGet<SegmentationListResponse>(`/api/v1/segmentation/runs/${analysisRunId}/segmentations${queryString(params)}`),
|
|
getRunGeoJson: (
|
|
analysisRunId: string,
|
|
params: { project_id: string; class_name?: string | null; min_confidence?: number | null },
|
|
): Promise<GeoJSON.FeatureCollection> =>
|
|
apiGet<GeoJSON.FeatureCollection>(`/api/v1/segmentation/runs/${analysisRunId}/geojson${queryString(params)}`),
|
|
compareWithReference: (analysisRunId: string, projectId: string, payload: SegmentationQaRequest): Promise<SegmentationQaResult> =>
|
|
apiPost<SegmentationQaResult>(`/api/v1/segmentation/runs/${analysisRunId}/qa/reference?project_id=${encodeURIComponent(projectId)}`, payload),
|
|
}
|