Link para a documentação da API: https://apisupersq.supermercadosq.com.br/documentation/redoc
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 [email protected]: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
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
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
** 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.
Ação | Requisição | Rota |
---|---|---|
Fazer o login | POST |
/login |
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 |
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 |
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 |
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. |
- 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.
- : 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.
- 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
- : Poderá denunciar comentários e postagens.
- : 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.
- : 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
- : 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