Categorygithub.com/andreis3/catalog-write-api
repository
0.0.0-20241102010158-c9f6bf517e0e
Repository: https://github.com/andreis3/catalog-write-api.git
Documentation: pkg.go.dev

# README

catalog-write-api

Sobre este projeto

Este projeto é um caso de teste.

Pré-requisitos

Passo 1: Clonar o repositório

Comece clonando este repositório para sua máquina local. Abra o terminal e execute o seguinte comando:

git clone https://github.com/Andreis3/catalog-write-api.git

Passo 2: Instalar dependências

Navegue até o diretório raiz do projeto e execute o seguinte comando para instalar as dependências do Go:

go mod download

Passo 3: Configurar variáveis de ambiente

O projeto pode exigir algumas variáveis de ambiente para funcionar corretamente. Verifique se existe um arquivo .env.example no diretório raiz do projeto. Se existir, faça uma cópia desse arquivo e renomeie-o para .env. Em seguida, atualize as variáveis de ambiente de acordo com as configurações do seu ambiente local.

Passo 4: Subir o ambiente

Para iniciar os serviços, execute o seguinte comando:

make docker-up | docker-compose up -d --build | docker compose up -d --build

Passo 4.1: Baixar o ambiente

Para iniciar os serviços, execute o seguinte comando:

make docker-down | docker-compose down | docker compose down

Passo 5: Executar o projeto

Para executar o projeto, execute o seguinte comando:
Obs: precisa ter golang instalado na máquina versão minima 1.22.1

make run-app

Passo 6: Testar o projeto

Objeto valido:

curl --location --request POST 'http://localhost:8080' \
--header 'Content-Type: application/json' \
--data-raw ''

Objeto invalido

{
    curl --location --request POST 'http://localhost:8080' \
--header 'Content-Type: application/json' \
--data-raw ''
}

Passo 7: Executar os testes

Para executar os testes, execute o seguinte comando:

make unit-tests

OBS: A aplicação precisa estar rodando para executar os testes de integração

make integration-tests

Passo 8: Gerar nova tag de versão

Para gerar uma nova tag de versão, execute o seguinte comando e siga as instruções que aparecerão no terminal:

make tag

Layout

.
├── docs/
│   ├── dashboards
│   └── sql
├── cmd/
│   └── author
├── configs
├── internal/
│   ├── app/
│   │   ├── command
│   │   └── query
│   ├── domain/
│   │   ├── aggregate
│   │   ├── entity      
│   │   ├── usecase
│   │   ├── errors
│   │   ├── cache
│   │   ├── observability
│   │   ├── repository
│   │   └── uow
│   ├── infra/
│   │   ├── adapters/
│   │   │   └── db/
│   │   │       ├── postgres
│   │   │       └── redis
│   │   ├── common/
│   │   │   ├── config
│   │   │   ├── logger
│   │   │   ├── observability
│   │   │   └── uuid
│   │   ├── factory/
│   │   │   ├── command
│   │   │   ├── handler
│   │   │   └── query
│   │   ├── mapper
│   │   ├── repository/
│   │   │   ├── postgres/
│   │   │   │   ├── author
│   │   │   │   └── book
│   │   │   └── redis/
│   │   │       └── cache
│   │   ├── routes
│   │   ├── server
│   │   ├── setup
│   │   └── uow
│   ├── presentation/
│   │   └── http/
│   │       ├── handlers/
│   │       │   ├── authorhandler/
│   │       │   │   ├── authorroutes
│   │       │   │   └── dto
│   │       │   ├── healthcheck/
│   │       │   │   ├── healthhandler
│   │       │   │   └── healthroutes
│   │       │   └── observability/
│   │       │       └── metricsroutes
│   │       ├── helpers
│   │       └── middlewares
│   └── util
└── tests/
    ├── mock
    ├── unit
    └── integration

Importante

  • O projeto implementa o padrão de projeto Unit of Work (UOW) para garantir que todas as operações de banco de dados sejam executadas com sucesso ou sejam desfeitas em caso de erro.