Restaurant-Backend-RestAPI

Node Nest Jest TypeScript Prisma Docker Mongo Swagger

Desafio.md

A principal funcionalidade da aplicação está em cadastrar produtos organizados por categorias e adicioná-los em cardápios separados por período diurno e noturno. Isso inclui o gerenciamento deles através do CRUD, o tratamento de regras de negócio que é, por exemplo, não duplicar produtos em cardápios ou remover produtos que estejam adicionados em cardápios.

Dependências

Ferramenta / Pacote Versão Opcional
Docker Desktop ^4
Docker Compose ^2 x
VsCode ^1.8 x
Node ^18
Yarn ou Npm ^1.22 ou ^9.8

Funcionalidades

Nome Post Get Patch Put Delete
Menus register [findOne, findMany, findManyByCurrentPeriod] update remove
Products register [findOne, findMany] update remove
Categories register [findOne, findMany, findProducts] update remove

Instalação

Instale as dependências do package.json

yarn install && yarn build

Copie o template do env para .env

cp env-example .env

Variáveis de ambiente

# Utilize esse esquema para conectar com o mongo ATLAS
DATABASE_URL="mongodb+srv://{username}:{password}.{host}/{database}?retryWrites=true&w=majority"

# Ou esse para conectar com o container do docker mongo
DATABASE_URL="mongodb://root:root@localhost:27017/restaurant?authSource=admin"

Docker

# Altere as permissões do script  para subir o mongo_replica
chmod +x docker/mongo/mongo-replica.sh
# Para executar o script e subir o container
docker/mongo/mongo-replica.sh
# Para acessar o terminal do mongo
docker exec -it mongo mongosh

#  Use: yarn prisma studio para visualizar as coleções
show dbs
use restaurant
db.auth('root', 'root')
show collections

Prisma

yarn prisma generate # atualizar o prisma.schema
yarn prisma db push # subir o schema para o banco de dados
yarn prisma studio # visualizar os dados

Subir o servidor

yarn run start # production  - [node dist/src/main]
yarn run start:dev # watch  - [nest start --watch]

Testes

yarn run test # unit tests
yarn run test:e2e # e2e tests
yarn run test:cov # test coverage

Licença

Nest is MIT licensed.

ERD

ERD

Endpoints

endpoints schemas