Closed EltonARodrigues closed 1 year ago
Opa gente, desculpem a demora. Sobre a sugestão acima, meus comentários são:
adapter/driven
e adapter/driver
poderia ficar como estava antes. driven
está concentrando a parte de conexão com a base de dados (ou bases, talvez no futuro). o driver
fica com a parte do que é exposto pra fora (a parte da API).driven
minha dúvida é com a pasta checkout
que está lá dentro, não saquei muito bem o motivo da separaçãoadapters
ia a pasta que o Elton chamou de interfaces
(gateways, presenters e controllers). só essa parte dos controllers que não saquei muito bem o que são e o que difere esses controllers dos que estão na parte de driven
junto com as rotas da API.core
como estava ou separadas já em entities
(o que estava dentro de domain
e useCases
(o que estava dentro de application
.vou fazer um rascunho e postar aqui.
Segue o rascunho de nova organização:
├─ src
│ ├─ adapters
│ │ ├─ driven
# aqui estou confusa com esse checkout
│ │ │ ├─ checkout
│ │ │ │ └─ repository
│ │ │ │ └─ checkoutRepository.ts
# podemos manter a pasta infra ou deixar tudo direto em driven
│ │ │ └─ infra
│ │ │ ├─ config
│ │ │ │ ├─ db.config.ts
│ │ │ │ └─ interfaces
│ │ │ │ └─ db.config.interface.ts
│ │ │ ├─ models
│ │ │ │ ├─ categoriaModel.ts
│ │ │ │ ├─ faturaModel.ts
│ │ │ │ ├─ index.ts
│ │ │ │ ├─ itemPedidoModel.ts
│ │ │ │ ├─ metodoDePagamentoModel.ts
│ │ │ │ ├─ pedidoModel.ts
│ │ │ │ ├─ produtoImagensModel.ts
│ │ │ │ ├─ produtoModel.ts
│ │ │ │ └─ usuarioModel.ts
│ │ │ ├─ repository
│ │ │ │ ├─ categoriaDatabaseRepository.ts
│ │ │ │ ├─ faturaDatabaseRepository.ts
│ │ │ │ ├─ metodoPagamentoDatabaseRepository.ts
│ │ │ │ ├─ pedidoDatabaseRepository.ts
│ │ │ │ ├─ produtoDatabaseRepository.ts
│ │ │ │ └─ usuarioDatabaseRepository.ts
│ │ │ └─ seeders
│ │ │ ├─ cria-categorias.ts
│ │ │ └─ cria-metodo-de-pagamento.ts
│ │ └─ driver
# parte da API exposta e suas implementações
│ │ └─ api
│ │ ├─ config
│ │ │ ├─ interfaces
│ │ │ │ └─ server.config.interface.ts
│ │ │ └─ server.config.ts
│ │ ├─ controllers
│ │ │ ├─ categoriaController.ts
│ │ │ ├─ metodoPagamentoController.ts
│ │ │ ├─ pedidoController.ts
│ │ │ ├─ produtoController.ts
│ │ │ └─ usuarioController.ts
│ │ ├─ routers
│ │ │ ├─ categoriaRouter.ts
│ │ │ ├─ index.ts
│ │ │ ├─ pagamentoRouter.ts
│ │ │ ├─ pedidoRouter.ts
│ │ │ ├─ produtoRouter.ts
│ │ │ ├─ usuarioRouter.ts
│ │ │ └─ utils.ts
# passei os schemas pra fora de routers mas pode ficar onde está
│ │ ├─ schemas
│ │ │ ├─ categoriaRouter.schema.ts
│ │ │ ├─ pagamentoRouter.schema.ts
│ │ │ ├─ pedidoRouter.schema.ts
│ │ │ ├─ produtoRouter.schema.ts
│ │ │ └─ usuarioRouter.schema.ts
│ │ └─ swaggerConfig.ts
# troquei domain por entities
│ ├─ entities
│ │ ├─ categoria.ts
│ │ ├─ fatura.ts
│ │ ├─ itemPedido.ts
│ │ ├─ metodoDePagamento.ts
│ │ ├─ pedido.ts
│ │ ├─ produto.ts
│ │ ├─ usuarios.ts
│ │ └─ valueObjects
│ │ ├─ cpf.ts
│ │ └─ email.ts
│ ├─ index.ts
# troquei applications por useCases
│ └─ useCases
│ ├─ repositories
│ │ ├─ categoriaRepository.ts
│ │ ├─ checkoutRepository.ts
│ │ ├─ faturaRepository.ts
│ │ ├─ metodoPagamentoRepository.ts
│ │ ├─ pedidoRepository.ts
│ │ ├─ produtoRepository.ts
│ │ └─ usuarioRepository.ts
│ └─ services
│ ├─ categoriaService.ts
│ ├─ metodoPagamentoService.ts
│ ├─ pedidoService.ts
│ ├─ pedidoService.type.ts
│ ├─ produtoService.ts
│ └─ usuarioService.ts
├─ tsconfig.json
├─ yarn.lock
├─ commitlint.config.js
├─ docker-compose.yaml
├─ Dockerfile
├─ LICENSE
├─ package.json
├─ README.md
Eu pesquisei um monte de modelos e exemplos de repositórios de projetos e na real não vejo muita coisa para mudar do nosso, pelo menos nada muito significativo.
Aí entraria depois a parte de refatorar os módulos, ver se tem mais coisa para separar, se isso geraria outras camadas, etc.
Peguei a organização atual e tentei mudar para algo mais próximo da CA e termos um ponto de partida na discussão