Front: Api models validation (#245)

* Front: Model: Write Validators

* Front: Plage response validator

* Front: API: Typing 'fetch' return

* Front: Basic Models: Response Handlers

* Front: API: Validate authentication response

* Front: Validate Search History

* Front: Validate Responses of User updates

* Front: On Validation Error, more verbose console error
This commit is contained in:
Arthur Jamet
2023-07-05 09:22:55 +01:00
committed by GitHub
parent 350a4870cd
commit 10d1342294
20 changed files with 575 additions and 287 deletions
+26 -1
View File
@@ -1,4 +1,29 @@
import Model from './Model';
import Model, { ModelValidator } from './Model';
import * as yup from 'yup';
import ResponseHandler from './ResponseHandler';
export const SearchType = ['song', 'artist', 'album'] as const;
export type SearchType = (typeof SearchType)[number];
const SearchHistoryValidator = yup
.object({
query: yup.string().required(),
type: yup.mixed<SearchType>().oneOf(SearchType).required(),
userId: yup.number().required(),
searchDate: yup.date().required(),
})
.concat(ModelValidator);
export const SearchHistoryHandler: ResponseHandler<
yup.InferType<typeof SearchHistoryValidator>,
SearchHistory
> = {
validator: SearchHistoryValidator,
transformer: (value) => ({
...value,
timestamp: value.searchDate,
}),
};
interface SearchHistory extends Model {
query: string;