| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import * as _ from 'lodash'
- import BaseNormalizer from '~/services/serializer/normalizer/baseNormalizer'
- import {AnyJson, DataPersisterArgs} from '~/types/interfaces'
- import { QUERY_TYPE } from '~/types/enums'
- import { repositoryHelper } from '~/services/store/repository'
- /**
- * @category Services/serializer/normalizer
- * @class Model
- * Classe assurant la normalization d'un Model vers un fichier JSON
- */
- class Model extends BaseNormalizer {
- static support (type: QUERY_TYPE): boolean {
- return type === QUERY_TYPE.MODEL
- }
- /**
- * Récupération de l'Item souhaité puis transformation en JSON
- * @param {DataPersisterArgs} args
- * @return {any} réponse
- */
- public static normalize (args: DataPersisterArgs): any {
- if (!args.model) {
- throw new Error('*args* has no model attribute')
- }
- const item = repositoryHelper.findItemFromModel(args.model, args.idTemp ? args.idTemp : args.id)
- if (!item || typeof item === 'undefined') {
- throw new Error('Item not found')
- }
- let data = item.$toJson()
- if(Model.isPostQuery(args)) data = Model.sanitizeBeforePost(data)
- return _.omit(data, 'originalState')
- }
- /**
- * Return true si on est dans un POST
- * @param args
- */
- public static isPostQuery(args: DataPersisterArgs): boolean{
- return args.idTemp
- }
- /**
- * Opération de nettoyage avant un POST
- * @param data
- */
- public static sanitizeBeforePost(data:AnyJson): AnyJson{
- data.id = null
- return data
- }
- }
- export default Model
|