Cómo crear un nuevo tipo de entidad

¿Cuándo es necesario crear una nueva entidad?

Primero, comprueba si una entidad existente puede resolver el caso de uso necesario para evitar sobreingeniería en la solución. Si ninguno de los tipos de entidad existentes definidos en https://github.com/decentraland/common-schemas/blob/main/src/platform/entity.ts#L13 satisface los requisitos, entonces puede que necesites crear un nuevo tipo de entidad.

Primera respuesta:

  • ¿La nueva entidad es una NFT Collection?

  • ¿Cómo se validará la propiedad?

  • ¿Cuál será su tamaño?

  • ¿Cuál es la cantidad de entidades que se crearán?

Pasos

Primero crea un ADR en https://github.com/decentraland/adr donde definirás el esquema y la fecha para comenzar a validar la nueva entidad.

Repositorios

@dcl/schemas

  1. Crea el nuevo tipo de entidad en el enum: https://github.com/decentraland/common-schemas/blob/main/src/platform/entity.ts#L19

  2. Crea la carpeta y los archivos en https://github.com/decentraland/common-schemas/tree/main/src/platform generando el tipo y el esquema JSON, por ejemplo: https://github.com/decentraland/common-schemas/blob/main/src/platform/profile/profile.ts#L20

@dcl/content-validator

Implementa las validaciones definidas en el ADR, teniendo en cuenta la fecha de ese ADR en https://github.com/decentraland/content-validator/blob/main/src/validations/timestamps.ts. Por ejemplo: https://github.com/decentraland/content-validator/blob/main/src/validations/items/emotes.ts#L8

  1. Agrega el código para verificar la propiedad del nuevo tipo de entidad en https://github.com/decentraland/content-validator/tree/main/src/validations/access-checker

  2. Implementa la validationForType para el nuevo tipo, por ejemplo: https://github.com/decentraland/content-validator/blob/main/src/validations/profile.ts#L112

  3. Aquí necesitarás definir el tamaño máximo por entidad en https://github.com/decentraland/content-validator/blob/main/src/validations/ADR51.ts.

@dcl/urn-resolver

  1. Si la nueva entidad corresponde a una Collection, entonces no hay que añadir nada.

  2. Si no, crea un nuevo urn correspondiente a la nueva entidad y defínelo en https://github.com/decentraland/urn-resolver añadiendo un resolver en https://github.com/decentraland/urn-resolver/blob/main/src/resolvers.ts#L23

Catalyst: Content Server

  1. No se necesita ningún cambio en la base de datos.

  2. Actualiza todas las librerías modificadas detalladas arriba.

Catalyst: Lambdas Server

  1. Actualiza todas las librerías modificadas detalladas arriba.

  2. Comprueba si la sanitización del profile necesita ser actualizada (/lambdas/profiles endpoint)

  3. Comprueba si el endpoint de erc collections necesita ser actualizado (/lambdas/collections endpoint)

  4. Crea un endpoint para mostrar esa entidad, por ejemplo /lambdas/wearables-by-owner

Última actualización