model.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import * as _ from 'lodash'
  2. import BaseNormalizer from '~/services/serializer/normalizer/baseNormalizer'
  3. import { DataPersisterArgs } from '~/types/interfaces'
  4. import { QUERY_TYPE } from '~/types/enums'
  5. import { repositoryHelper } from '~/services/store/repository'
  6. /**
  7. * @category Services/serializer/normalizer
  8. * @class Model
  9. * Classe assurant la normalization d'un Model vers un fichier JSON
  10. */
  11. class Model extends BaseNormalizer {
  12. static support (type: QUERY_TYPE): boolean {
  13. return type === QUERY_TYPE.MODEL
  14. }
  15. /**
  16. * Récupération de l'Item souhaité puis transformation en JSON
  17. * @param {DataPersisterArgs} args
  18. * @return {any} réponse
  19. */
  20. public static normalize (args: DataPersisterArgs): any {
  21. if (!args.model) {
  22. throw new Error('*args* has no model attribute')
  23. }
  24. const item = repositoryHelper.findItemFromModel(args.model, args.id)
  25. if (!item || typeof item === 'undefined') {
  26. throw new Error('Item not found')
  27. }
  28. const data = item.$toJson()
  29. return _.omit(data, 'originalState')
  30. }
  31. }
  32. export default Model