@prefecthq/prefect-ui-library
Version:
This library is the Vue and Typescript component library for [Prefect 2](https://github.com/PrefectHQ/prefect) and [Prefect Cloud 2](https://www.prefect.io/cloud/). _The components and utilities in this project are not meant to be used independently_.
47 lines (34 loc) • 1.61 kB
text/typescript
import { isDefined } from '@prefecthq/prefect-design'
import { SavedSearchResponse } from '@/models/api/SavedSearchResponse'
import { SavedSearchesFilter } from '@/models/Filters'
import { SavedSearch, SavedSearchCreate } from '@/models/SavedSearch'
import { mapper } from '@/services/Mapper'
import { WorkspaceApi } from '@/services/WorkspaceApi'
export class WorkspaceSavedSearchesApi extends WorkspaceApi {
protected override routePrefix = '/saved_searches'
public async getSavedSearches(filter: SavedSearchesFilter = {}): Promise<SavedSearch[]> {
const request = mapper.map('SavedSearchesFilter', filter, 'SavedSearchesFilterRequest')
const { data } = await this.post<SavedSearchResponse[]>('/filter', request)
const mapped = data.map(savedSearch => {
try {
return mapper.map('SavedSearchResponse', savedSearch, 'SavedSearch')
} catch (error) {
console.error(error)
}
return undefined
}).filter(isDefined)
return mapped
}
public async getSavedSearch(id: string): Promise<SavedSearch> {
const { data } = await this.get<SavedSearchResponse>(`/${id}`)
return mapper.map('SavedSearchResponse', data, 'SavedSearch')
}
public async createSavedSearch(search: SavedSearchCreate): Promise<SavedSearch> {
const request = mapper.map('SavedSearchCreate', search, 'SavedSearchCreateRequest')
const { data } = await this.put<SavedSearchResponse>('/', request)
return mapper.map('SavedSearchResponse', data, 'SavedSearch')
}
public deleteSavedSearch(id: string): Promise<void> {
return this.delete(`/${id}`)
}
}