Nova@1.0 - Despliegue de Backend IV - Final

MDG developerMDG developer
2 min read

Hoy me quiero centrar en configurar algunos de los endpoints y comprobar su funcionamiento.

La idea es implementar un CRUD completo y empezarlo por aquellos endpoints más sencillos: estoy viene a ser aquellos endpoints asociados a tablas que no tengan relaciones complejas con otras tablas.

Para ello he decidido centrarme en dos:

  • clients

  • employees

¿Qué significa CRUD?

CRUD es un acrónimo que describe las cuatro operaciones fundamentales de manejo de datos en aplicaciones o bases de datos: Crear (Create), Leer (Read), Actualizar (Update) y Eliminar (Delete).

Estas acciones representan el ciclo básico de interacción con los datos, permitiendo agregar nuevos registros, consultarlos, modificarlos o eliminarlos según sea necesario, y son esenciales en el desarrollo de software para gestionar información de manera estructurada y eficiente.

CRUD en Nova

Para los endpoints /clients y /employees vamos a tener una serie de acciones a realizar que serán comunes para ellos:

(C)reate

  • create(): Creará un nuevo registro (cliente en este caso)

(R)ead

  • findAll(): Listará todos los registros de la tabla

  • findOne(id): Listará el ítem que tenga por id el facilitado en la URL

(U)pdate

  • update(id): Actualizará el registro basándose en el id facilitado. En este caso usamos el método PATCH (aunque podríamos decidirnos luego por el PUT/POST)

(D)elete

  • remove(id): Eliminará el registro con el id

Un ejemplo

  async remove(id: number) {
    try {
      const client = await this.prisma.client.delete({
        where: { client_id: id },
      });
      return client;
    } catch (error) {
      if (error instanceof Prisma.PrismaClientKnownRequestError) {
        if (error.code === 'P2025') {
          throw new NotFoundException('Client not found');
        }
      }
      throw new InternalServerErrorException('An unexpected error occurred');
    }
  }
}

A modo de ejemplo aquí tenéis cómo quedaría la función eliminar. Aunque parezca algo engorrosa, en realidad su complejidad es para controlar los errores. El código de verdad está dentro del try.

Últimos pasos

Para finalizar, la implementación de las transacciones ha sido algo más compleja porque exigía la relación entre múltiples tablas en el momento tanto de crear como de leer. Esto es debido a que cada transacción incluye una relación directa con productos o servicios, así como con empleados y clientes.

Es, por así decirlo, la tabla maestra de nuestra lógica del backend y sobre la que va a girar toda nuestra aplicación. Por eso es importante hacerla bien.

Con esto, el backend para la versión 1.0 está finalizado a falta de quizá algunas pequeñas modificaciones una vez concluyamos el frontend.

0
Subscribe to my newsletter

Read articles from MDG developer directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

MDG developer
MDG developer