- Configurar ambiente de desenvolvimento com Go.
- Configurar PostgreSQL para o banco de dados.
- Configurar Redis para cache.
- [??] Configurar ferramentas de testes unitários e integração.
- Criar o projeto com a estrutura de diretórios para API REST.
-
Modelagem das Tabelas:
- Criar a tabela
customers
com campos:id
,nome
,email
- Criar a tabela
products
com campos:id
,nome
,descricao
,preco
. - Criar a tabela
orders
com campos:id
,customer_id
,data_order
,status
. - Criar a tabela
itens_order
com campos:id
,order_id
,product_id
,quantidade
. - Criar a tabela
stock
com campos:id
,product_id
,quantidade_disponivel
.
- Criar a tabela
-
Normalização:
- Garantir que as tabelas estejam normalizadas para evitar redundâncias.
-
Migrations:
- Configurar migrations para versionar o esquema do banco de dados.
- Criar migrations para adicionar e modificar tabelas e colunas.
-
Índices de Banco de Dados:
- Criar índices nas colunas mais consultadas, como
customer_id
,product_id
eorder_id
.
- Criar índices nas colunas mais consultadas, como
-
Transações (ACID):
- Implementar transações para garantir que as operações de criação de orders sejam atômicas (incluir itens do order e atualizar stock).
-
Estrutura de Endpoints:
- Criar endpoint
POST /customers
para cadastro de novos customers. - Criar endpoint
GET /customers/{id}
para visualizar detalhes de um customer. - Criar endpoint
POST /products
para adicionar novos products. - Criar endpoint
GET /produccts
para pegar todos os produtos- Criar um sistema de paginação
- Criar endpoint
GET /products/{id}
para visualizar detalhes de um product. - Criar endpoint
POST /orders
para criar um order. - Criar endpoint
GET /orders/{id}
para visualizar detalhes de um order. - Criar endpoint
PUT /orders/{id}
para atualizar o status do order. - Criar endpoint
POST /auth/login
para autenticação de usuários com JWT.
- Criar endpoint
-
JWT para Autenticaço:
- Implementar autenticação com JWT nas rotas protegidas.
- Adicionar middleware para verificar o token em rotas privadas.
- Sistemas de ROLE para usuarios
-
Implementação de Cache:
- Implementar caching para products mais vendidos.
- Implementar cache para detalhes de orders e customers para melhorar a performance.
-
Configuração do Redis:
- Configurar o Redis no projeto e integrá-lo com a aplicação.