UNPKG

@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
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}`) } }