Skip to content

Conversation

DevGranemann
Copy link

O que foi feito

  • Implementação completa da API de investimentos utilizando Symfony 7.2 e PHP 8.
  • Endpoints criados:
    • POST /api/investments/create → Cria um investimento
    • GET /api/investments/list/{ownerId}→ Lista investimentos de um proprietário com paginação ex:(?page=1&limit=5)
    • PUT /api/investments/draw/{id} → Realiza saque de um investimento
    • GET /api/investments/withdrawn-gains/{ownerId} → Lista ganhos já retirados
    • GET /api/investments/future-balances/{investmentId} → Projeta saldo futuro de um investimento
    • POST /api/clientowner/create → Cria um proprietário
  • Integração com MySQL via Doctrine ORM.
  • Documentação automática dos endpoints via NelmioApiDocBundle (Swagger UI).
  • Tratamento de erros para dados inválidos e retornos consistentes (JSON + HTTP status codes).
  • Implementação de validações básicas (parâmetros obrigatórios, existência de Owner, limites de paginação).
    Paginação na listagem:
paginacao

Testando as rotas no Insomnia:

rota-paginacao

Por que foi feito

  • Permitir que a API seja consumida por frontend ou aplicações externas.
  • Padronizar respostas e facilitar integração via JSON.
  • Criar documentação interativa para testes e onboarding de novos desenvolvedores.

Como testar

  1. Clonar o repo:
   git clone <URL_DO_REPOSITORIO>
   cd <PASTA_DO_PROJETO>
  1. Instalar as dependências PHP:
  composer install
  1. Configurar o .env com os dados do BD MySQL:
    DATABASE_URL="mysql://usuario:[email protected]:3306/nome_do_banco?serverVersion=8.0"
  1. Criar o BD e rodar as migrations:
  php bin/console doctrine:database:create
  php bin/console doctrine:migrations:migrate
  1. Rodar o servidor local do Symfony:
   symfony serve
  1. A documentação da API foi criada através do Nelmio. Está disponível localmente no endereço http://127.0.0.1:8000/api/doc.
swegger-api-documentation
  1. Ainda estou estudando a implementação de testes unitários.

Conclusão

A escolha das ferramentas e tecnologias utilizadas neste projeto se devem ao que julguei melhor satisfazer as necessidades de cada funcionalidade e ao meu conhecimento na utilização das mesmas. Procurei desenvolver o código com as melhores práticas que conheço, procurando separar os arquivos de serviço dos controladores, separando também funcionalidades que, mais tarde, poderiam ser reutilizadas. Todo o código foi desenvolvido por mim, com ajuda de ferramentas de IA para conseguir aumentar a minha produtividade. Em relação aos testes unitários, é uma boa prática que estou estudando e logo poderei utilizar e implementar. Me diverti muito programando essa solução! Além de que pude treinar e adquirir novos conhecimentos! Espero que gostem :D

… Controller files modified to generate documentation
Adicionado descrição sobre autenticação.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants