import {FilterFields} from 'common/filters' import {Row, run} from 'common/supabase/utils' import {removeNullOrUndefinedProps} from 'common/util/object' import {filterKeys} from 'web/components/questions-form' import {api} from 'web/lib/api' import {track} from 'web/lib/service/analytics' import {db} from 'web/lib/supabase/db' export const getUserBookmarkedSearches = async (userId: string) => { const {data} = await run( db .from('bookmarked_searches') .select('*') .eq('creator_id', userId) .order('id', {ascending: false}), ) return data } export type BookmarkedSearchSubmitType = Omit< Row<'bookmarked_searches'>, 'created_time' | 'id' | 'last_notified_at' | 'creator_id' > export const submitBookmarkedSearch = async ( filters: Partial, locationFilterProps: any, userId: string | undefined | null, ) => { if (!filters) return if (!userId) return const row = { search_filters: removeNullOrUndefinedProps(filters), location: locationFilterProps?.location ? locationFilterProps : null, } const props = { ...filterKeys( row, (key, _) => !['id', 'created_time', 'last_notified_at', 'creator_id'].includes(key), ), } as BookmarkedSearchSubmitType await api('create-bookmarked-search', props) } export const deleteBookmarkedSearch = async (id: number) => { if (!id) return await api('delete-bookmarked-search', {id}) track('bookmarked_searches delete', {id}) }