Skip to content

Instantly share code, notes, and snippets.

@omurilo
Last active January 23, 2022 18:34
Show Gist options
  • Save omurilo/81d60e3c3fff06a848be9add98ccb19e to your computer and use it in GitHub Desktop.
Save omurilo/81d60e3c3fff06a848be9add98ccb19e to your computer and use it in GitHub Desktop.
Tindev, orientações para criação da API

Tindev

  • backend
    • express (micro framework para api rest)
      • src
        • Arquivo de entrada com as configurações de inicialização do express
          • servir a aplicação em uma porta (e.g: listen 3333)
    • nodemon (escuta as mudanças do código e reinicia o servidor automático)
      • Arquivo de rotas da aplição, express router para gerenciá-las.
      • Usar JSON -> express.use(json)
    • Banco de dados -> Mongo (não possui muitos relacionamentos na aplicação)
      • mongoose ODM
    • Arquitetura M - Model, V - View (react), C - Controller
      • Model Dev
        • Schema e model do mongoose
          • DevSchema:
            • name: { string, required }
            • user: { string, required }
            • bio: String,
            • avatar: { string, required }
            • timestamps (createdAt, updatedAt)
          • export model ('Dev', Devschema)
      • Controller Dev
        • Biblioteca para fazer requisições http para api externa (axios)
        • create dev (store):
          • username (github)
        • Usar o model Dev para criar um novo dev
          • name, user, bio e avatar;
          • Antes de salvar, verificar se existe ou não ele no banco. (findOne)
      • Like Controller
        • Model Dev:
          • likes [{ objectId (scheme types ), ref: 'Dev'}]
          • dislikes [{ objectId (scheme types ), ref: 'Dev'}]
        • store:
          • devId como parâmetro da requisição
          • user (headers da requisição, pode ser um jwt)
            • usuário logado (findById(user))
            • usuário alvo (findById(devId))
              • Se usuário não existir, retornar erro.
              • likes do usuário logado e inserir (push) o novo like e salvar as alterações no banco (save)
            • verificar o match (entre os devs)
              • likes do usuário alvo inclui o usuário logado? DEU MATCH : segue o fluxo.
      • Dislike Controller
        • Mesma coisa do like controller, mas sem opção do match
      • Listagem de devs (Dev controller index)
        • usuário logado (headers, findById)
        • buscar todos que não são (usuário logado, dislikes e likes)
          find({ $and: [
            { _id: { $ne: user },
            { _id: { $nin: loggedDev.likes } },
            { _id: { $nin: loggedDev.dislikes } }
          ] })
          
    • Instalar cors: biblioteca para liberar o acesso externo à api;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment