Api Products

Descripcion

Api-Products expone el tipico crud sobre el dominio de products.

  • Crear
  • Editar
  • Eliminar
  • Actualizar
  • Listar

Se responden con los clasicos http codes, consumiendo y respondiendo JSON

Se separa las responsabilidades de la api por paquetes e interfaces:

  • Internal (logica de negocio)
  • Pkg interfaces externas

Esto para facilitar la extension y/o modificacion de las implementaciones, ademas de los testing unitarios.

Conceptos

  • Inyeccion de dependencias
  • Unica instancia de bd
  • Cerrar conexion a la bd
  • Uso de decoradores
  • Composicion
  • Test unitarios
  • Mocks
  • Separacion de responsabilidades

TODO: Implement

  • Implementar api-key y endpoint de autenticacion por token
  • Agregar test a la validacion del modelo Product
  • Mejorar manejo de errores en la capa de servicio
  • Agregar script que espere a iniciar el contenedor de la api cuando el servidor mongo ya este disponible
  • Cubrir mas casos de pruebas
  • Agregar ci/cd

Instrucciones

  • Instalar go 1.17
  • Instalar mongo o configurar archivo .env hacia un servidor mongo
  • Crear base de datos bd y coleccion products
  • Configurar demas variables de entorno
  • Importar archivo de coleccion con Postman
  • Desde el terminal ejecutar go run cmd/api/main.go
  • Ejecutar requests

Test & Coverage

  • go test ./... -cover
  • go test tool cover -func profile.cov
  • go tool cover -html profile.cov -o coverage.html