Giter VIP home page Giter VIP logo

cursosufcg-backend's Introduction

💫 About Me:

🔭 I'm currently working as a Software Engineer II at @olxbr
📚 I am a graduate of the Computer Science course at UFCG.
📚 I'm doing an MBA in Full Cycle Architecture.
🌱 I like to study everything that involves programming, mainly web development, functional programming, software engineering and machine learning.

My Page

🌐 Socials:

LinkedIn Discord Instagram

💻 Tech Stack:

Python Kotlin Java JavaScript Clojure Go TypeScript CSS3 GraphQL HTML5 Markdown AWS Cloudflare GithubPages Heroku Netlify OpenStack Express.js Expo FastAPI NPM NodeJS Spring Vue.js React Nginx AmazonDynamoDB Redis SQLite ElasticSearch KIBANA Kubernetes GRAFANA NEWRELIC VAULT PROMETHEUS Docker ESLint ElasticSearch Gradle Confluence Jira Kubernetes Prometheus Postman

📊 GitHub Stats:



🏆 GitHub Trophies

✍️ Random Dev Quote

🔝 Top Contributed Repo

😂 Random Dev Meme


cursosufcg-backend's People

Contributors

igorsilveira7 avatar richecr avatar

Stargazers

 avatar

Watchers

 avatar  avatar

cursosufcg-backend's Issues

Criar a tabela Usuario no banco.

  • Implementar o model Usuario com os seus respectivos atributos(colunas).

    • Primeiro nome.
    • Último nome
    • E-mail(Identificador único)
    • Senha

Autenticação de usuários

  • Implementar a parte de autenticar um usuário, caso ele já esteja cadastrado no sistema.

    • - Na criação de um usuário, deve retorna um token.

    • - Rota de login

      • usuário irá fazer login com e-mail e senha.

GET Perfil: Deve vim um atributo que diga se aquele usuário deu Like nesse perfil.

  • Implementar a funcionalidade na rota GET Perfil deve retornar um atributo usuarioAutenticado(quem chamou a rota) deu like ou não naquela disciplina.

  • Implementação:
    • Criar um atributo usuarioAutenticado na class Perfil, e ao usuário chamar a rota GET Perfil, na qual recebe o email do usuário autenticado, eu irei verificar se o usuário deu like e então setar no meu novo atributo: true ou false.

Autenticação

  • Essa parte está implementada, mas não sendo utilizada para facilitar no desenvolvimento para testes, ao concluir o projeto, lembrar de configurar corretamente.

Criar o UsuarioRepository

  • Implementar a classe UsuarioRepository. Onde vai conter os métodos necessários para a realizações dos métodos do UsuarioService e do UsuarioController.

    • - findByEmail
      • Retorna um usuário com o mesmo email (Usando Query).

Perfil de uma disicplina

  • Implementar o que irá representar um Perfil de uma disciplina

    • - Disciplina referente.
    • - Likes dos usuários.
    • - Retirar like.
    • - Comentários dos usuários.
    • - Notas dadas por usuários à uma disciplina.
    • - Média de uma disciplina.
    • - Apagar comentário.
  • Garantir:

    • - Não duplicação de likes do mesmo usuário.
    • - Não duplicação de notas do mesmo usuário.
    • - Perfil ter o mesmo ID que a Disciplina referente.

QUESTION: Repensar sobre a implementação de likes

Razão da mudança:

Já que a entidade Curtida não possui campo nenhum. Por que não tira-lá e deixar a relação entre Perfil e Usuario ?


  • Atualmente a implementação de likes é feita da seguinte forma:

Existe uma classe Curtida que tem três atributos: id, perfil e usuario. Na qual id é o identificador, perfil é o perfil que recebe esse like e o usuario é o usuário que deu like no perfil.

Na classe Perfil tem um atributo de coleção(List) de Curtida. Com o relacionamento de 1 perfil pode possuir várias Curtidas.

Na classe Usuario tem um atributo de coleção(List) de Curtida. Com o relacionamento de 1 usuário pode dar várias Curtidas.

  • Vantagens:

    • A ideia de um like fica explicita.
  • Desvantagens:

    • A criação de uma entidade, repository e service.
    • Um pequeno aumento na complexidade das consultas.

  • Nova implementação:

Na classe Perfil terá um atributo de coleção(List) de Usuario, com o relacionamento de muitos perfis podem 'possuir' vários Usuario``(A ideia de curtir está implícita). Toda vez que um usuário curtir um perfil, ele(o usuário) será salvo dentro dessa coleção.

Na classe Usuarioterá um atributo de coleção(List) de Perfil, com o relacionamento de muitos usuários podem 'possuir' vários Perfil``. Toda vez que um usuário curtir um perfil, ele(o perfil) será salvo dentro dessa coleção.

OBS: Não precisa ser uma coleção de Usuario, pode salvar apenas o identificador(email). E também vale para coleção de Perfil, basta salvar apenas o identificador(id).

OBS: A classe dominadora é Perfil.

  • Vantagens:

    • Diminuição na complexidade das consultas.
    • Evita a criação de entidade, repository e service.
  • Desvantagens:

    • A ideia de um like fica implícita.

Criar o UsuarioController

  • Implementar o UsuarioController com a rota padrão /v1/usuarios. Juntamente com os métodos GET, POST, PATCH, PUT e DELETE necessários.

    • - Criar Usuário (POST) (Rota: /usuario).
    • -Deletar um usuário (DELETE) (Rota: /usuario/{email}).
    • - Enviar email ao cadastrar um novo usuário.
  • Necessários:

    • - Tratamentos de exceções.
    • - Não deixar cadastrar dois usuários com mesmo e-mail.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.