Backend referente a aplicação Movielist.
Você pode acessar por aqui!
Algumas das tecnologias utilizadas para desenvolvimento deste projeto:
- Clone este repositório
- Instale as dependências com o comando:
NPM i
- Crie um banco de dados PostgreSQL com o nome que você preferir
- Configure o .env usando o .env.example de exemplo
- Inicie o projeto com o comando:
npm run dev
Confere o funcionamento da aplicação utilizando uma request esperando uma resposta
Método | Caminho |
---|---|
GET |
/health |
Resposta: "Oh, hey there, I'm OK!"
Entidade filme se identifica da seguinte forma:
{
"page": 1,
"results": [
{
"adult": false,
"backdrop_path": "/irwQcdjwtjLnaA0iErabab9PrmG.jpg",
"genre_ids": [
28,
12,
53
],
"id": 646389,
"original_language": "en",
"original_title": "Plane",
"overview": "O piloto Brodie Torrance salva seus passageiros de um raio pousando em uma ilha. Os moradores rebeldes e perigosos do local fazem a tripulação refém e Torrance procura ajuda de um passageiro acusado de assassinato.",
"popularity": 2277.913,
"poster_path": "/zr50kb04fTFcGfZTKFzbKTmQSiZ.jpg",
"release_date": "2023-01-12",
"title": "Alerta Máximo",
"video": false,
"vote_average": 6.9,
"vote_count": 683
},
{
"adult": false,
"backdrop_path": "/b1Y8SUb12gPHCSSSNlbX4nB3IKy.jpg",
"genre_ids": [
16,
12,
35
],
"id": 315162,
"original_language": "en",
"original_title": "Puss in Boots: The Last Wish",
"overview": "O Gato de Botas descobre que sua paixão pela aventura cobrou seu preço: ele queimou oito de suas nove vidas, deixando-o com apenas uma vida restante. Gato parte em uma jornada épica para encontrar o mítico Último Desejo e restaurar suas nove vidas.",
"popularity": 2251.995,
"poster_path": "/atJxZfCaQ7kXRFSfbm8cqAKkns7.jpg",
"release_date": "2022-12-07",
"title": "Gato de Botas 2: O Último Pedido",
"video": false,
"vote_average": 8.5,
"vote_count": 4094
},
Método | Caminho |
---|---|
GET |
/movies/toptrendig?page |
Retorna um Array com os filmes mais comentados da semana.
Obs: É preciso passar a página por QUERY
Método | Caminho |
---|---|
GET |
/movies/toprated?page |
Retorna um Array com os filmes mais populares de todos os tempos.
Obs: É preciso passar a página por QUERY
Método | Caminho |
---|---|
GET |
/movies/upcoming?page |
Retorna um Array com os próximos filmes a caminho.
Obs: É preciso passar a página por QUERY
Método | Caminho |
---|---|
GET |
/movies/search/:title |
Retorna um Array de filmes que começam com os caracteres escritos no title.
Método | Caminho |
---|---|
GET |
/movies/details/:movieId |
Retorna um os detalhes do filme informado pelo Id.
obs: é necessário usar o Id informado pelo TheMovieDatabase.
Método | Caminho |
---|---|
GET |
/movies/collections/:collectionId |
Retorna as informações da coleção ao qual o Id foi informado.
obs: é necessário usar o Id informado pelo TheMovieDatabase.
Método | Caminho |
---|---|
GET |
/movies/credits/:movieId |
Retorna as informações da equipe técnica e atores do filme qual o Id foi informado.
obs: é necessário usar o Id informado pelo TheMovieDatabase.
Método | Caminho |
---|---|
POST |
/users |
Cria um usuário na aplicação.
BODY:
{
email: string,
password: string,
username: string,
}
Método | Caminho |
---|---|
GET |
/users/profile?username |
Retorna o perfil de um usuário.
Resposta:
{
id: number,
userId: number,
username: string,
photo_path: string | null,
backdrop_path: string | null,
createdAt: timestamp,
updatedAt: timestamp
}
Método | Caminho |
---|---|
PUT |
/users/profile |
Edita o perfil de um usuário.
obs: essa é uma rota autenticada
BODY:
{
username: string,
photo_path: string | null,
backdrop_path: string | null,
}
Método | Caminho |
---|---|
GET |
/users/profile/find?username |
Retorna os usuários que começam com os caracteres escritos em username.
obs: essa é uma rota autenticada
Método | Caminho |
---|---|
POST |
/auth/sign-in |
Usado para fazer login com um usuário.
BODY:
{
email: string,
password: string,
}
Resposta:
{
"user": {
"id": 2,
"email": "teste@teste.com",
"Profile": [
{
"username": "Admin",
"backdrop_path": "https://i.pinimg.com/originals/44/1e/07/441e0768961c66de03094044f20807dc.gif",
"photo_path": "https://giffiles.alphacoders.com/210/210439.gif"
}
]
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjIsImlhdCI6MTY3NzY3Njg4NH0.Je2qAA0Rbr70U3hINeSYUDKyJMUQ3I7CFnE_V7N_Tng"
}
Método | Caminho |
---|---|
GET |
/favorits?movieId |
Faz uma requisição para conferir se o filme é um favorito ou não.
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pelo TheMovieDatabase.
Método | Caminho |
---|---|
GET |
/favorits/all?tmdbMovieId |
Retorna um Array com os filmes favoritados.
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pela API.
Método | Caminho |
---|---|
POST |
/favorits/new |
Marca um novo filme como favorito.
obs: Essa é uma rota autenticada.
BODY:
{
tmdbMovieId: number,
tmdbTitle: number,
tmdbPoster_path: string
}
Método | Caminho |
---|---|
DELETE |
/favorits?favoritId |
Desfavorita um filme
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pela API.
Método | Caminho |
---|---|
GET |
/planning?movieId |
Faz uma requisição para conferir se o filme está marcado como planejado ou não.
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pelo TheMovieDatabase.
Método | Caminho |
---|---|
GET |
/planning/all?tmdbMovieId |
Retorna um Array com os filmes que planeja assistir.
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pela API.
Método | Caminho |
---|---|
POST |
/planning/new |
Marca um novo filme como planejo assistir.
obs: Essa é uma rota autenticada.
BODY:
{
tmdbMovieId: number,
tmdbTitle: number,
tmdbPoster_path: string
}
Método | Caminho |
---|---|
DELETE |
/planning?favoritId |
Desmaca um filme que estava marcado como planejado
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pela API.
Método | Caminho |
---|---|
GET |
/watched?movieId |
Faz uma requisição para conferir se o filme foi assistido ou não.
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pelo TheMovieDatabase.
Método | Caminho |
---|---|
GET |
/watched/all?tmdbMovieId |
Retorna um Array com os filmes assistidos.
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pela API.
Método | Caminho |
---|---|
POST |
/watched/new |
Marca um novo filme como assistido.
obs: Essa é uma rota autenticada.
BODY:
{
tmdbMovieId: number,
tmdbTitle: number,
tmdbPoster_path: string
}
Método | Caminho |
---|---|
DELETE |
/watched?favoritId |
Desmarca um filme como assistido
obs: Essa é uma rota autenticada.
obs: é necessário usar o Id informado pela API.
Método | Caminho |
---|---|
GET |
/history?username |
Retorna o histórico de um usuário.
Método | Caminho |
---|---|
GET |
/history/info?historyId |
Retorna as informações de um card do histórico de um usuário.
Resposta:
{
userId: number;
Like: Like[];
id: number;
type: HistoryType;
createdAt: Date;
Comment: {
id: number;
createdAt: Date;
User: User & {
Profile: Profile[];
};
comment: string;
};
}
Método | Caminho |
---|---|
POST |
/history/comment |
Cria um novo comentário em um card do histórico de um usuário.
obs: Essa é uma rota autenticada.
BODY:
{
comment: string,
historyId: number
}
Método | Caminho |
---|---|
POST |
/history/like |
Adiciona um like em um card do histórico de um usuário.
obs: Essa é uma rota autenticada.
BODY:
{
historyId: number
}
Método | Caminho |
---|---|
DELETE |
/history/like?likeId |
Deleta um like em um card do histórico de um usuário.
obs: Essa é uma rota autenticada.
obs: é necessário utilizar o ID fornecido pela API.
Método | Caminho |
---|---|
DELETE |
/history/comment?commentId |
Deleta um comentário em um card do histórico de um usuário.
obs: Essa é uma rota autenticada.
obs: é necessário utilizar o ID fornecido pela API.
Método | Caminho |
---|---|
GET |
/rated?tmdbMovieId |
Pesquisa se existe alguma nota do usuário atríbuida ao filme selecionado.
obs: Essa é uma rota autenticada.
obs: é necessário utilizar o ID fornecido pela API.
Método | Caminho |
---|---|
POST |
/rated |
Atribúi uma nota do usuário ao filme selecionado.
obs: Essa é uma rota autenticada.
BODY:
{
tmdbMovieId: number,
rate: number
}
Método | Caminho |
---|---|
DELETE |
/rated?rateId |
Deleta uma nota do usuário atribuída ao filme selecionado.
obs: Essa é uma rota autenticada.
obs: é necessário utilizar o ID fornecido pela API.