Skip to content

API em Node.js com SQLite em memória que fornece informações sobre os filmes indicados e vencedores do Golden Raspberry Awards

Notifications You must be signed in to change notification settings

jiovanmichel/golden-raspberry-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Golden Raspberry - NODE API

Esta API fornece informações sobre os filmes indicados e vencedores do Golden Raspberry Awards.

Tecnologias utilizadas

Node.js Node.js
JavaScript JavaScript
Docker Docker
SQLite SQLite
Vitest Vitest

Dependências

Nodejs na versão 22.11.0

ou

Docker e Docker Compose

Instalação

Use o repositório do github para clonar/baixar/instalar o projeto Golden Raspberry - Github.

git clone https://github.com/jiovanmichel/golden-raspberry-api

ou

Download zip do projeto e descompactar

Iniciar a aplicação

cd golden-raspberry-api/app

npm install pm2 -g

npm install

npm run start

API disponível em http://localhost:8000

Executar os testes

npm run test

Iniciar a aplicação usando docker

cd golden-raspberry-api

docker-compose up -d

API disponível em http://localhost:8000

Executar os testes

docker-compose -f docker-compose-test.yaml up -d

Rotas da API

  1. GET http://localhost:8000/api/movies

    Lista todos os filmes

    resposta

    [
        {
            "id": 1,
            "title": "Movie Title",
            "producers": "Producers Name",
            "studios": "Studios Name",
            "year": 2021,
            "winner": "yes"
        },
    ]
  2. GET http://localhost:8000/api/movies/1

    Obtém informações de um filme específico pelo seu ID.

    Parâmetros:

    • id (id do filme)

    resposta

    {
        "id": 1,
        "title": "Movie Title",
        "producers": "Producers Name",
        "studios": "Studios Name",
        "year": 2021,
        "winner": "yes"
    },
  3. POST http://localhost:8000/api/movies

    Cria um novo filme

    body da requisição

    {
        "title": "Movie Title",
        "producers": "Producers Name",
        "studios": "Studios Name",
        "year": 2021,
        "winner": "yes"
    },

    resposta

    {
        "id": 2,
        "title": "Movie Title",
        "producers": "Producers Name",
        "studios": "Studios Name",
        "year": 2021,
        "winner": "yes"
    },
    
    
  4. PUT http://localhost:8000/api/movies/1

    Atualiza completamente as informações de um filme

    Parâmetros:

    • id (id do filme)

    body da requisição

    {
        "title": "Updated Movie Title",
        "producers": "Updated Producers Name",
        "studios": "Updated Studios Name",
        "year": 2021,
        "winner": "yes"
    },

    resposta

    {
        "id": 1,
        "title": "Updated Movie Title",
        "producers": "Updated Producers Name",
        "studios": "Updated Studios Name",
        "year": 2021,
        "winner": "yes"
    },
    
  5. PATCH http://localhost:8000/api/movies/1

    Atualiza parcialmente as informações de um filme

    Parâmetros:

    • id (id do filme)

    body da requisição

    {
        "title": "Updated Movie Title"
    },

    resposta

    {
        "id": 1,
        "title": "Updated Movie Title",
        "producers": "Producers Name",
        "studios": "Studios Name",
        "year": 2021,
        "winner": "yes"
    },
  6. DELETE http://localhost:8000/api/movies/1

    Deleta um filme pelo ID

    Parâmetros:

    • id (id do filme)

    resposta

    true
  7. GET http://localhost:8000/api/producers/awards-min-max-interval

    Lista os produtores com menor (min) e maior (max) intervalo entre dois prêmios

    resposta

    {
        "min": [
            {
                "producer": "Producer 1",
                "interval": 1,
                "previousWin": 2008,
                "followingWin": 2009
            },
            {
                "producer": "Producer 2",
                "interval": 1,
                "previousWin": 2018,
                "followingWin": 2019
            }
        ],
        "max": [
            {
                "producer": "Producer 1",
                "interval": 99,
                "previousWin": 1900,
                "followingWin": 1999
            },
            {
                "producer": "Producer 2",
                "interval": 99,
                "previousWin": 2000,
                "followingWin": 2099
            }
        ]
    }

    Se dois produtores possuírem o mesmo intervalo seja min ou max ambos serão adicionados na lista.

Futuras Implementações

Para melhorias futuras do projeto, podem ser implementados e configuradas as seguintes opções:

1. Interface de Usuário (UI) com Vitest

  • A interface gráfica do Vitest pode configurada e habilitada, permitindo a visualização em tempo real dos testes em execução, facilitando o acompanhamento do status e dos resultados dos testes durante o desenvolvimento.

2. Cobertura de Testes e Integração com SonarQube

  • Será adicionada a configuração de cobertura de testes, proporcionando uma visão clara de quais partes do código estão sendo testadas e ajudando a garantir que a base de código esteja bem testada.
  • Integração com SonarQube para monitorar a qualidade do código, identificando possíveis bugs, codesmells, e erros, promovendo um ambiente de desenvolvimento mais saudável e sustentável.

3. Criação de Novas Rotas

  • Rotas para Consultar Studios e Producers: Novas rotas devem adicionadas para permitir a consulta de dados sobre studios e producers.
  • Autenticação e Permissão de Rotas: Implementação de uma camada de autenticação para controlar o acesso às rotas, com sistemas de permissão para garantir a segurança e a integridade do sistema.

Essas melhorias irão contribuir para a expansão e a robustez do projeto, além de proporcionar uma experiência mais rica e segura para os usuários.

About

API em Node.js com SQLite em memória que fornece informações sobre os filmes indicados e vencedores do Golden Raspberry Awards

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published