Bem-vindo ao repositório da API Tasks, um sistema desenvolvido para gerenciar tarefas de forma eficiente, modular e escalável. Este projeto aplica conceitos modernos de desenvolvimento, como Clean Code, Orientação a Objetos, e o padrão Repository Pattern, além de utilizar Entity Framework com suporte ao MySQL.
- ASP.NET Core: Framework principal para a construção da API.
- Microsoft.EntityFrameworkCore: ORM para manipulação do banco de dados.
- Pomelo.EntityFrameworkCore.MySQL: Driver para conexão com o MySQL.
- Swashbuckle.AspNetCore: Ferramenta para documentação interativa com Swagger.
- xUnit e Moq: Frameworks utilizados para criação e execução de testes unitários.
A estrutura do projeto foi cuidadosamente planejada para seguir os princípios da orientação a objetos e Clean Code, garantindo modularidade e legibilidade.
- Controllers: Contém os controladores da API (
TasksController.cs), responsáveis por lidar com as requisições HTTP. - Database: Inclui a configuração do contexto do Entity Framework (
TaskContext.cs). - DTO: Contém os objetos de transferência de dados (
TaskDto.cs) para facilitar a comunicação entre camadas. - Interfaces: Define contratos com as interfaces base e específicas, como
IRepository,ITaskRepositoryeITaskService. - Models: Modelos da aplicação, incluindo
TaskModel.cspara representação das tarefas eErrorspara manipulação de erros personalizados. - Repository: Implementa o padrão Repository (
Repository.cseTaskRepository.cs) para centralizar a lógica de acesso ao banco de dados. - Services: Contém
TaskService.cs, que aplica as regras de negócio da aplicação. - Views: Exemplos de arquivos HTTP (
APITasks.http) para chamadas diretas durante o desenvolvimento. - Test: Testes unitários utilizando
xUniteMoq, definidos no arquivosTestController.cseTestRepository.cs.
Os testes são implementados utilizando o framework xUnit para garantir a qualidade e o funcionamento do sistema. O projeto também usa o Moq para criar mocks das dependências, permitindo testes sem conexão com banco de dados.
- GetAllAsync: Retorna a lista paginada de tarefas.
- GetByIdAsync: Busca uma tarefa específica pelo ID.
- AddAsync: Adiciona uma nova tarefa ao banco.
- UpdateAsync: Atualiza uma tarefa existente.
- DeleteAsync: Remove uma tarefa do banco, com verificação de ID inválido.
- Certifique-se de ter o xUnit instalado.
- Execute o seguinte comando no terminal:
dotnet test-
CRUD de Tarefas:
- Adicionar, atualizar, listar e remover tarefas.
- Validação de IDs inexistentes.
-
Injeção de Dependência:
- Interfaces como
IRepositoryeITaskServicesão utilizadas para permitir alta flexibilidade e facilidade de manutenção.
- Interfaces como
-
Padrões de Desenvolvimento:
- Aplicação do padrão Repository para abstração do acesso aos dados.
- Utilização de Clean Code para melhorar a legibilidade e qualidade do código.
-
Documentação Interativa:
- Integração com Swagger para facilitar o utilização da API.
-
Clone este repositório:
git clone <url-do-repositorio> cd API_Tasks
-
Configure a conexão com o banco no arquivo
appsettings.json:"ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=TasksDB;User=root;Password=yourpassword;" }
-
Execute as migrações para criar o banco:
dotnet ef database update
-
Rode o projeto:
dotnet run
-
Acesse a documentação no Swagger:
- URL:
http://localhost:5000/swagger
- URL:
Sinta-se à vontade para abrir issues e pull requests. Toda contribuição é bem-vinda!