Skip to content

stack-over-code-atlantico/supermercadosq-be

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Documentação

Link para a documentação da API: https://apisupersq.supermercadosq.com.br/documentation/redoc

Configurando e inicializando o projeto

Primeiramente deverá fazer o clone da aplicação em sua máquina:

Através do https

    git clone https://github.com/stack-over-code-atlantico/supermercadosq-be.git

Através do ssh

    git clone git@github.com:stack-over-code-atlantico/supermercadosq-be.git

Utilizamos o npm install para instalar todas as depedências utilizadas no projeto.

    npm install 

Para essa próxima etapa é necessário ter o arquivo .env configurado

Logo após a instalação, utilizamos o npx prisma generate para inicilizar e gerar um cliente prisma.

    npx prisma generate

E, por fim, usamos o npm run dev para iniciar o servidor em modo de desenvolvimento utilizando a biblioteca nodemon no endereço: http://localhost:3000

    npm run dev

Dependências

Depedências de desenvolvimento

Arquitetura de Pastas do Backend

Fluxo da Aplicação

    flowchart TD
    A[Chegada da requisição] -->|Envia para| B(Controller)
    B(Controller) --> C(Função correspondente no cotroller)
    C --> D{Há Erros?}
    D --> |Sim| E[Retorna Error]
    D --> |Não| F[Service]
    F --> G[Função no service]
    G --> H{Validações}
    H --> |Sim| I[Retorna Error]
    H --> |Não| J[repository]
    J --> K(Faz consulta no banco)

    style A fill:#99d9ff,stroke:#000,stroke-width:4px,color:#000
    style B fill:#acecb6,stroke:#000,stroke-width:4px,color:#000
    style D fill:#f9f49f,stroke:#000,stroke-width:4px,color:#000
    style F fill:#acecb6,stroke:#000,stroke-width:4px,color:#000
    style H fill:#f9f49f,stroke:#000,stroke-width:4px,color:#000
    style J fill:#acecb6,stroke:#000,stroke-width:4px,color:#000
Loading

Fluxo para Deletar usuário

    sequenceDiagram
    par Rota "/" to Middleware
        Rota "/"->>Middleware: Envia para função nos middlewares
    and Middleware to Funcao_Auth
        Middleware->>Funcao_Auth: Tem token?
        Funcao_Auth-->>Rota "/": Não há token ou token inválido
    and Middleware to Funcao_isAdmin
        Middleware->>Funcao_isAdmin: É administrador?
        Funcao_isAdmin-->>Rota "/": Não é administrador
    and Middleware to Controller_delete_user
        Middleware->>Controller_delete_user: Deletado!
        Controller_delete_user->>Rota "/": Status 200
    end
Loading

Endpoints / Rotas

** Todas as informações nos endpoints entre parenteses "()" são os valores ou parâmetros

** Todas as informações nas requisições adicionadas do ícone "👨‍⚖️" são rotas que exigem autenticação(token) de administrador.

** Todas as informações nas requisições adicionadas do ícone "👤" são rotas que exigem autenticação(token) de usuário.

Login

Ação Requisição Rota
Fazer o login POST /login

Usuários

Ação Requisição Rota
Listar todos os usuários GET /users
Criar um novo usuário POST /users
Atualizar as informações de um usuário PUT 👤 /users/(cpf_cnpj)
Deletar o usuário (setar o valor do atributo "ativo": false) PUT 👨‍⚖️ /users/(cpf_cnpj)/delete
Alterar o nível de usuário (setar o valor do atributo "nivel": "ADMINISTRADOR" ou "CLIENTE" ou "FORNECEDOR") PUT 👨‍⚖️ /users/(cpf_cnpj)/nivel_edit

Produtos

Ação Requisição Rota
Listar todos os produtos GET /products
Criar uma postagem de um produto POST 👤 /products
Alterar a postagem do produto cadastrado PUT 👤 /products/(id_produto)
Deletar uma postagem de um produto (setar o valor do atributo "status": "REPROVADO") PUT 👤 /products/(id_produto)/delete
Denunciar um produto PUT 👤 /products/(id_produto)/denuncia
Analisa denuncias relacionadas a uma postagem de um produto PUT 👨‍⚖️ /products/(id_produto)/analisaDenuncia

Comentário

Ação Requisição Rota
Listar todos os comentários GET /comments
Criar um comentário POST 👤 /comments
Editar um comentário PUT 👤 /comments/(id_comentario)
Deletar um comentário de uma postagem (setar o valor do atributo "status": "REPROVADO") PUT 👤 /comments/(id_comentario)/delete
Denunciar um comentário PUT 👤 /comments/(id_comentario)/report
Analisa denúncias relacionadas a um comentário em uma postagem PUT 👨‍⚖️ /comments/(id_comentario)/reviewReport

Regra de negócios

Entidades

Descrição

Usuário

O Usuário poderá se cadastrar como cliente ou fornecedor.

O Usuário terá email, senha, cpf ou cnpj, endereço. O telefone, nome social serão opcionais.

O Usuário não poderá cadastrar o cpf ou cnpj caso já estejam cadastrados.

O Usuário não poderá cadastrar um email caso já esteja cadastrado.

O Usuário poderá alterar email, senha, endereço, telefone, porém não o seu nível de acesso e cpf ou cnpj.

Administrador

O Administrador do sistema pode cadastrar outros administradores, fornecedores e clientes.

O Administrador poderá adicionar suas próprias postagens, comentários, assim como apagar e editar.

O Administrador poderá bloquear usuários, arquivar comentários e postagens denunciados.

O Administrador poderá alterar o nível de qualquer usuário.

O sistema deverá iniciar com um Administrador primordial (Adão).

Haverá uma validação para que o Administrador (Adão) não possa ser deletado do sistema através do seu ID.

Fornecedor

O Fornecedor poderá criar suas próprias postagens e comentar outras.

O Fornecedor poderá denunciar comentários e postagens.

O Fornecedor poderá editar suas postagens e comentários.

O Fornecedor que tiver sua conta desativada, terá o atributo "ativo" como false, assim como seus comentários postados.

Cliente

O Cliente poderá criar suas próprias postagens e comentar outras.

O Cliente poderá denunciar comentários e postagens.

O Cliente poderá editar suas postagens e comentários.

O Cliente que tiver sua conta desativada, terá o atributo "ativo" como false, assim como seus comentários postados.

Produtos

O Produto deverá ter um nome, ingredientes. A imagem é opcional.

O Produto iniciará com o atributo "status" como null, caberá ao Administrador avalia-lo entre "true" ou "false".

O Produto, ao ser postado pelo usuário, terá uma data de postagem como atributo, e também, o atributo "editado" para mostrar caso haja alteração na postagem.

O Produto só poderá ser listado e apresentado no site caso possua o atributo "status" como null ou true.

O Produto só poderá denunciado caso seu atributo "status" seja null.

O Produto receberá inicialmente o atributo "feedbacks_produto" como 0, e caso receba like terá seu valor incrementado.

O Produto possuirá um atributo chamado "id_aprovado" recebendo o valor do ID do Administrador responsável por aprova-lo.

Comentário

O Comentário deverá possuir uma mensagem.

O Comentário ao ser feito, terá os atributos "status", "data_comentario", "editado" e "id_aprovado".

O Comentário iniciará com o atributo "status" como null, caberá ao Administrador avalia-lo entre "true" ou "false".

O Comentário iniciará com o atributo "editado" como false, se tornando true ao ser editado pela primeira vez.

O Comentário não possuirá número mínimo de caracteres, porém deverá possuir 140 caracteres no máximo.

O Comentário terá o atributo "feedbacks_comentarios" iniciado como 0, e se caso receber like terá seu valor incrementado.

O Comentário possuirá um atributo chamado "id_aprovado" recebendo o valor do ID do Administrador responsável por aprova-lo.

Ações a Fazer

  • O sistema deverá iniciar com um Administrador primordial (Adão).
  • Haverá uma validação para que o Administrador (Adão) não possa ser deletado do sistema através do seu ID.

Usuário

  • : Cadastrar usuário
  • : Listagem de usuário
  • : Atualização de usuário
  • : O Usuário não poderá cadastrar o cpf ou cnpj caso já estejam cadastrados.
  • : O Usuário não poderá cadastrar um email caso já esteja cadastrado.
  • : O Usuário poderá alterar email, senha, endereço, telefone, porém não o seu nível de acesso e cpf ou cnpj não.
  • : O Usuário poderá adicionar suas próprias postagens, comentários
  • : O Usuário poderá denunciar comentários e postagens.
  • : O Usuário poderá editar suas postagens e comentários.

Administrador

  • Todos tem um middleware isAdmin
  • : O Administrador do sistema pode transformar um usuário em ADMIN. Criar rota, terá uma validação de administrador, ou seja Middleware isAdmin
  • : O Administrador poderá adicionar apagar e editar.
  • : O Administrador poderá arquivar comentários
  • : O Administrador poderá bloquear postagens denunciados.
  • : Deixar usuário inativo (Delete)
  • : O Administrador poderá alterar o nível de qualquer usuário.
  • : Aprovar produto Quando o produto estiver aprovado, terá o id_aprovado, que será o id do administrador que aprovou

Fornecedor

  • : Poderá denunciar comentários e postagens.
  • : Poderá editar suas postagens e comentários.

Cliente

  • : O Cliente que tiver sua conta desativada, terá o atributo "ativo" como false, assim como seus comentários postados.

Produtos

  • : Criar produto
  • : Listar produto apenas aqueles com status diferentes de false
  • : Atualizar produto
  • : Deletar/Denunciar produto Setar Status para false Terá validação, ou seja, Middleware isAdmin

Comentário

  • : Criar comentário
  • : Deletar comentário Setar status para false
  • : Atualizar comentário
  • : Listar comentário
  • : Denunciar comentário Setar para false
  • : Função rota para atualizar id_admin_relator com o id do ADMIN quando aprovado Apenas Admins podem aprovar

Releases

No releases published

Packages

No packages published