Este projeto consiste em uma API de back-end desenvolvida para gerenciar um catálogo de filmes. Utiliza Node.js, Express para o roteamento e Prisma como ORM para interagir com o banco de dados. A API permite realizar operações CRUD (Criar, Ler, Atualizar, Deletar) em filmes, que incluem informações como título, URL da imagem, quantidade, descrição e duração em minutos.
A API oferece uma solução centralizada para gerenciar um catálogo de filmes, facilitando a organização e o acesso a informações detalhadas sobre cada filme. Ideal para aplicações que necessitam de um backend robusto para gerenciar dados de filmes.
- Node.js instalado.
- Um banco de dados PostgreSQL.
- npm (Node Package Manager) para gerenciar as dependências.
- Docker (opcional, para facilitar a configuração do PostgreSQL).
-
Clone o repositório para sua máquina local:
git clone <URL_DO_REPOSITORIO>
-
Abra um terminal e navegue até a pasta
back_filme
do projeto clonado:cd back_filme
-
Execute
npm install
para instalar todas as dependências necessárias:npm install
-
Configure o arquivo
.env
na raiz do projeto com as credenciais do seu banco de dados PostgreSQL:DATABASE_URL="postgresql://usuario:senha@localhost:5432/nome_do_banco"
-
Execute
npx prisma migrate dev --name create-table-filmes
para criar a tabelafilmes
no banco de dados:npx prisma migrate dev --name create-table-filmes
-
Execute
npm import cors
para importar e configurar o pacote CORS na sua aplicação:npm i cors
-
Inicie a aplicação com
npm run start
. A aplicação estará rodando na porta 3333:npm run start
-
Para iniciar o docker-compose será necessário executar o comando abaixo:
docker-compose up -d
-
Em seguida execute as migrate com a seguinte linha de comando:
npx prisma migrate dev
-
Listar instâncias que estão rodando:
docker ps
-
Listar todas as instâncias:
docker ps -a
-
Listar todas as imagens existentes:
docker images
-
Baixar a imagem do PostgreSQL:
docker pull postgres
-
Criar uma instância do PostgreSQL (baixando a imagem automaticamente):
docker create postgres
-
Apagar uma instância caso exista:
docker rm postgres
-
Criar e rodar uma instância do PostgreSQL:
docker run --name postgres-p 5432:5432 -e POSTGRES_PASSWORD=secret -d postgres
-
Iniciar a instância criada:
docker start postgres
-
Parar a instância rodando:
docker stop postgres
-
Iniciar o projeto Node:
npm init -y
-
Instalar o Express:
npm i express
-
Instalar os tipos do Express para TypeScript:
npm i @types/express -D
-
Instalar TypeScript e ts-node:
npm i typescript ts-node @types/node -D
-
Instalar o Prisma:
npm i prisma -D
-
Iniciar o TypeScript e criar o arquivo
tsconfig.json
:npx tsc --init
-
Iniciar o Prisma e criar os arquivos
.env
eschema.prisma
:npx prisma init
GET /filme
Retorna uma lista de todos os filmes cadastrados.
POST /filme
Corpo da requisição:
{
"title": "Nome do Filme",
"imageURL": "URL da Imagem do Filme",
"amount": 10,
"describe": "Descrição do Filme",
"time_minutes": 120
}
Adiciona um novo filme ao catálogo.
GET /filme/:id
Substitua :id
pelo ID do filme desejado. Retorna os detalhes do filme especificado.
PUT /filme/:id
Substitua :id
pelo ID do filme que deseja atualizar. Corpo da requisição similar ao da adição de um novo filme.
Atualiza os detalhes do filme especificado.
DELETE /filme/:id
Substitua :id
pelo ID do filme que deseja deletar. Remove o filme do catálogo.
Nota: É extremamente importante instanciar o {id}
corretamente nas requisições GET, PUT e DELETE para garantir que as operações sejam realizadas no filme específico desejado.
-
Faça um fork do projeto.
-
Crie uma branch para sua feature ou correção:
git checkout -b minha-nova-feature
-
Faça o commit das suas alterações:
git commit -m 'Adiciona nova feature'
-
Envie para o branch original:
git push origin minha-nova-feature
-
Crie um pull request.
O projeto segue uma arquitetura de camadas, onde temos:
- Camada de Roteamento: Gerencia as rotas da aplicação.
- Camada de Controle: Contém a lógica de controle das requisições.
- Camada de Serviço: Contém a lógica de negócios.
- Camada de Dados: Gerencia a interação com o banco de dados.
- CRUD de filmes.
- Validação de dados de entrada.
- Uso de ORM para interação com o banco de dados.
- Estrutura modular e escalável.
- MVC (Model-View-Controller): Organiza a aplicação em três componentes principais para separação de responsabilidades.
- DAO (Data Access Object): Abstrai e encapsula o acesso ao banco de dados.
Seguir o guia de estilo padrão do ESLint com algumas customizações específicas para o projeto, como uso do Prettier para formatação de código.
Método: GET
URL: http://localhost:3333/filme
- Abra o Insomnia.
- Clique em "New Request".
- Nomeie a requisição como "Listar Todos os Filmes".
- Selecione o método GET.
- Insira a URL
http://localhost:3333/filme
. - Clique em "Send".
Método: POST
URL: http://localhost:3333/filme
-
Abra o Insomnia.
-
Clique em "New Request".
-
Nomeie a requisição como "Adicionar Novo Filme".
-
Selecione o método POST.
-
Insira a URL
http://localhost:3333/filme
. -
Vá para a aba "Body" e selecione "JSON".
-
Adicione o seguinte JSON no corpo da requisição:
{ "title": "Nome do Filme", "imageURL": "URL da Imagem do Filme", "amount": 10, "describe": "Descrição do Filme", "time_minutes": 120 }
-
Clique em "Send".
Método: GET
URL: http://localhost:3333/filme/:id
- Abra o Insomnia.
- Clique em "New Request".
- Nomeie a requisição como "Buscar Filme por ID".
- Selecione o método GET.
- Insira a URL
http://localhost:3333/filme/1
(substitua1
pelo ID do filme desejado). - Clique em "Send".
Método: PUT
URL: http://localhost:3333/filme/:id
-
Abra o Insomnia.
-
Clique em "New Request".
-
Nomeie a requisição como "Atualizar Filme".
-
Selecione o método PUT.
-
Insira a URL
http://localhost:3333/filme/1
(substitua1
pelo ID do filme que deseja atualizar). -
Vá para a aba "Body" e selecione "JSON".
-
Adicione o seguinte JSON no corpo da requisição:
-
Clique em "Send".
{ "title": "Nome do Filme Atualizado", "imageURL": "URL da Imagem do Filme Atualizado", "amount": 20, "describe": "Descrição do Filme Atualizado", "time_minutes": 150 }
Método: DELETE
URL: http://localhost:3333/filme/:id
- Abra o Insomnia.
- Clique em "New Request".
- Nomeie a requisição como "Deletar Filme".
- Selecione o método DELETE.
- Insira a URL
http://localhost:3333/filme/1
(substitua1
pelo ID do filme que deseja deletar). - Clique em "Send".
Durante o desenvolvimento deste projeto, aprendi sobre a integração do Prisma com o Node.js e como utilizar o Docker para gerenciar instâncias de banco de dados de forma eficiente. Também aprofundei meus conhecimentos em arquitetura de software e boas práticas de desenvolvimento backend.
- Abra o CMD do seu computador escolha a pasta desejada e faça o git clone
git clone https://github.com/SinvalFilho/Full-Movie
- Quando fazer o download do repositorio tera duas pastas uma com o back-end chamada “Black-Filmes” e outra com o front-end “Front-Filme”
- faça um cd ./front-filme/ e depois abra com o vs code .
cd full-Movie
cd front-filme
code .
- faça o download das dependencias
npm install
npm install react react-dom
npm install react-icons
- Depois inicie o seu React.
npm run dev