Skip to content

API .NET Core 8 e Entity Framework Core para gerenciamento de avaliação de livros que realiza uma integração a API do Google Books.

Notifications You must be signed in to change notification settings

backjoao88/good-reads-api-c-sharp

Repository files navigation

GoodReads

Escopo

Desenvolver uma API de gerenciamento de avaliação de livros que realiza uma integração com uma API externa de livros. Ele deve permitir o cadastro validado de livros, avaliações e usuário.

Entidades

Livro

  • ID (GUID)
  • Título (string)
  • Descrição (string)
  • ISBN (string)
  • Autor (string)
  • Editora (string)
  • Genero (Enum)
  • AnoPublicacao (int)
  • Paginas (int)
  • DataRegistro (DateTime)
  • NotaMedia (decimal)
  • CapaLivro (bytes)
  • Avaliacoes (List)

Avaliação

  • ID (GUID)
  • Nota (int)
  • Descricao (string)
  • IdUsuario (int)
  • IdLivro (int)
  • DataRegistro (DateTime)

Usuario

  • ID (GUID)
  • Email (string)
  • Nome (string)
  • Avaliacoes (List)

Regras de negócio

  • Data de início não pode ser maior que o fim de leitura, ao cadastrar a avaliação;
  • ISBN deve ser único ao cadastrar livro;
  • Nota deve ser de 1 a 5 ao cadastrar avaliação;
  • A nota média do livro deve ser recalculada a cada cadastro de avaliação;
  • O usuário pode cadastrar apenas uma avaliação por livro;
  • O sistema deve gerar um relatório sobre a quantidade de livros lidos naquele ano (+);
  • O sistema deve permitir o usuário subir um arquivo com a capa do livro (+);
    • Salvar em memória
  • O sistema deve permitir o usuário baixar um arquivo com a capa do livro (+);
    • Baixar da memória
  • O sistema deve permitir consulta de livros em uma fonte externa (+);
    • Configurar por meio de uma classe de opções;
    • Criar o client com base no Google APIs;
  • O sistema deve realizar a autenticação e autorização do usuário (+);
    • Pedir autorização na camada de consulta externa;
    • Criar uma rotina de autorização baseada em permissões;

Conceitos aplicados

  • Utilizar documentação com o Swagger;
  • Utilizar validação com o FluentValidation na camada de aplicação;
  • Utilizar camadas da arquitetura limpa;
  • Utilizar ORM EfCore com SQL Server nas entidades;
  • Utilizar o padrão CQRS no projeto de acordo com as regras de negócio;
  • Utilizar o padrão Repository nas entidades do projeto;
  • Utilizar o padrão de resultados na camada de domínio;

About

API .NET Core 8 e Entity Framework Core para gerenciamento de avaliação de livros que realiza uma integração a API do Google Books.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages