Extender modelos

Introducci贸n

Es frecuente tener que extender los modelos de la capa de servicios debida a la l贸gica propia del negocio. En este caso vamos a ver como extender el modelo de CategoryType para a帽adir un atributo nuevo.

1. Agregar atributo en la configuraci贸n

Modificamos el fichero con la config de Mercury mercury.config.js para a帽adir el nuevo atributo.

src/mercury.config.js
const configs = {
  storefront: [
    { locale: 'es', storeCode: 'default' }
  ],
  components: { ... },
  models: {
+   category: {
+     extraFields: [
+       {
+         field: 'tet_category_thumbnail',
+         property: 'thumbnail',
+         type: 'string'
+       }
+     ]
+   }
  },
  tailwind: { ... }
}

Por cada atributo nuevo que queramos a帽adir, tendremos que a帽adir un objeto en el array extraFields con los siguientes atributos:

  • field: Nombre del atributo con el que proviene de la API
  • property: Nombre del atributo que queremos que tenga en el modelo
  • type: Tipo de dato del atributo (string, number, boolean, etc)

2. Extender type del modelo

Para extender el modelo de CategoryType siguiendo el ejemplo anterior, creamos un fichero catalog.d.ts en la carpeta src/types con el siguiente contenido:

src/models/catalog.d.ts
import type { CategoryType } from '@mercury/models'
declare module '@mercury/models' {
  export interface CategoryType {
    thumbnail: string
  }
}

CategoryType.protoype.thumbnail = ''