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
Crea el nuevo tipo de entidad en el enum: https://github.com/decentraland/common-schemas/blob/main/src/platform/entity.ts#L19
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
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
Implementa la validationForType para el nuevo tipo, por ejemplo: https://github.com/decentraland/content-validator/blob/main/src/validations/profile.ts#L112
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
Si la nueva entidad corresponde a una Collection, entonces no hay que añadir nada.
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
No se necesita ningún cambio en la base de datos.
Actualiza todas las librerías modificadas detalladas arriba.
Catalyst: Lambdas Server
Actualiza todas las librerías modificadas detalladas arriba.
Comprueba si la sanitización del profile necesita ser actualizada (
/lambdas/profilesendpoint)Comprueba si el endpoint de erc collections necesita ser actualizado (
/lambdas/collectionsendpoint)Crea un endpoint para mostrar esa entidad, por ejemplo
/lambdas/wearables-by-owner
Última actualización