Tabla de Contenidos
Introducción
Facilita la creación de cotizaciones minimizando el tipeo manual y los posibles errores que podrían ocurrir al hacerlo de la forma convencional.
Arquitectura Hexagonal
Descripción de la estructura del proyecto con la arquitectura hexagonal, incluyendo el flujo entre API, casos de uso, servicios y base de datos.
Estructura del Proyecto:
┣ .github
┣ assets
┃ ┣ images
┃ ┃ ┗ QuoteMaker_Logo.png
┃ ┗ .DS_Store
┣ cmd
┃ ┗ main.go
┣ internal
┃ ┣ app
┃ ┃ ┣ application
┃ ┃ ┃ ┣ category
┃ ┃ ┃ ┣ customer
┃ ┃ ┃ ┣ product
┃ ┃ ┃ ┣ quotation
┃ ┃ ┃ ┗ seller
┃ ┃ ┣ domain
┃ ┃ ┃ ┣ category
┃ ┃ ┃ ┃ ┣ category.go
┃ ┃ ┃ ┃ ┗ categoryRepository.go
┃ ┃ ┃ ┣ customer
┃ ┃ ┃ ┃ ┣ customer.go
┃ ┃ ┃ ┃ ┗ customerRepository.go
┃ ┃ ┃ ┣ product
┃ ┃ ┃ ┃ ┣ product.go
┃ ┃ ┃ ┃ ┗ productRepository.go
┃ ┃ ┃ ┣ quotation
┃ ┃ ┃ ┃ ┣ quotation.go
┃ ┃ ┃ ┃ ┗ quotationRepository.go
┃ ┃ ┃ ┗ seller
┃ ┃ ┃ ┃ ┣ seller.go
┃ ┃ ┃ ┃ ┗ sellerRepository.go
┃ ┃ ┗ infrastructure
┃ ┃ ┃ ┣ config
┃ ┃ ┃ ┃ ┣ config.go
┃ ┃ ┃ ┃ ┗ config.yaml
┃ ┃ ┃ ┣ db
┃ ┃ ┃ ┃ ┗ db.go
┃ ┃ ┃ ┣ persistence
┃ ┃ ┃ ┃ ┣ category
┃ ┃ ┃ ┃ ┃ ┣ sqlCategoryRepository.go
┃ ┃ ┃ ┃ ┃ ┗ sqlCategoryRepository_test.go
┃ ┃ ┃ ┃ ┣ customer
┃ ┃ ┃ ┃ ┃ ┣ sqlCustomerRepository.go
┃ ┃ ┃ ┃ ┃ ┗ sqlCustomerRepository_test.go
┃ ┃ ┃ ┃ ┣ product
┃ ┃ ┃ ┃ ┃ ┣ sqlProductRepository.go
┃ ┃ ┃ ┃ ┃ ┗ sqlProductRepository_test.go
┃ ┃ ┃ ┃ ┣ quotation
┃ ┃ ┃ ┃ ┃ ┣ sqlQuotationRepository.go
┃ ┃ ┃ ┃ ┃ ┗ sqlQuotationRepository_test.go
┃ ┃ ┃ ┃ ┗ seller
┃ ┃ ┃ ┃ ┃ ┣ sqlSellerRepository.go
┃ ┃ ┃ ┃ ┃ ┗ sqlSellerRepository_test.go
┃ ┃ ┃ ┗ transport
┃ ┃ ┃ ┃ ┣ grpc
┃ ┃ ┃ ┃ ┗ http
┃ ┗ pkg
┃ ┃ ┣ util
┃ ┃ ┃ ┗ random.go
┃ ┃ ┗ utiltest
┃ ┃ ┃ ┗ create_random.go
┣ migrations
┃ ┣ 000001_init_schema.down.sql
┃ ┗ 000001_init_schema.up.sql
┣ .DS_Store
┣ .env
┣ .gitignore
┣ LICENSE
┣ Makefile
┣ README.md
┣ go.mod
┣ go.sum
┣ go.work
┗ go.work.sum
Funcionalidades
- Backend en Go estándar.
- Interfaz de usuario adaptable a cualquier tecnología frontend.
- Creación rápida de interfaces de usuario para programas en Go.
- Multiplataforma con motores de renderizado nativos.
Built With
Empezando
Instrucciones para configurar el proyecto localmente.
Prerrequisitos
- Docker y Postgres.
- Herramientas de migración de base de datos.
Instalación
Pasos para clonar el repositorio y configurar el entorno de desarrollo.
Uso
Ejemplos de cómo se puede utilizar el proyecto. Enlace a la documentación para más ejemplos.
Licencia
Distribuido bajo la Licencia MIT. Ver LICENSE.txt
para más información.
Errores
- Error "No such file start.sh" o "No such file wait-for.sh", estos se deben a modificaciones en los saltos de linea en los archivos al hacer una operacion en git, puede ser solucionado con los comandos "dos2unix start.sh" y "dos2unix wait-for.sh", en caso de que sea un error de permisos habra que ejecutar los comandos "chmod +x start.sh" o "chmod +x wait-for.sh"
Para crear redes para contenedores
docker build -t .
docker network create
docker network connect
docker network inspect
docker container inspect
Pasos de conexion
- crear red.
docker network create
- conectarse a red creada.
docker network connect
- crear contenedor de bd.
docker run --name --network -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=secret -d postgres:12-alpine
- crear contenedor postgres conectado a la red.
docker network connect api-network
- poblar base de datos y migraciones de la bd
docker exec -it postgres createdb --username=root --owner=root quote_maker
migrate -path migrations -database "postgres://root:secret@localhost:5432/quote_maker?sslmode=disable" -verbose up
- crear imagen de go.
docker build -t :latest .
- correr imagen de go en red.
docker run --name --network -p 8080:8080 -e DB_SOURCE="postgres://root:secret@postgres:5432/quote_maker?sslmode=disable" go-api:latest