import Model, { ModelValidator } from './Model'; import * as yup from 'yup'; import ResponseHandler from './ResponseHandler'; export const SearchType = ['song', 'artist', 'album', 'genre'] as const; export type SearchType = (typeof SearchType)[number]; const SearchHistoryValidator = yup .object({ query: yup.string().required(), type: yup.mixed().oneOf(SearchType).required(), userId: yup.number().required(), searchDate: yup.date().required(), }) .concat(ModelValidator); export const SearchHistoryHandler: ResponseHandler< yup.InferType, SearchHistory > = { validator: SearchHistoryValidator, transformer: (value) => ({ ...value, timestamp: value.searchDate, }), }; interface SearchHistory extends Model { query: string; type: SearchType; userId: number; timestamp: Date; } export default SearchHistory;