Skip to content

blueevee/api-mariaflix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PROJETO FINAL MVCAD 2020

PROPOSTA

MariaFlix

Estamos desenvolvendo um projeto pra criar o MariaFlix, uma plataforma onde teremos um catálogo de filmes e séries dos mais diversos. Para isso, precisamos atender as seguintes funcionalidades.

  • Ter um CRUD de filmes e séries.
  • Ter um CRUD de usuários.
  • Endpoint para associar o usuário à um filme ou episódio de uma série.
  • Relatório para verificar todos os filmes que uma pessoa viu.
  • Relatório para verificar todos as temporadas inteiras de uma série que uma pessoa viu.
  • Relatório para verificar quem foram as TOP5 pessoas que mais assistiram algo dentro do MariaFlix em um determinado mês.

O projeto tem como escopo fazer uma api usando python, flask e postgreSQL.
Python Version Flask version Postgres version Pygree version

TASKLIST

  • Ter um CRUD de filmes e séries.
  • Ter um CRUD de usuários.
  • Endpoint para associar o usuário à um filme ou episódio de uma série.
  • Relatório para verificar todos os filmes que uma pessoa viu.
  • Relatório para verificar todos as temporadas inteiras de uma série que uma pessoa viu.
  • Relatório para verificar quem foram as TOP5 pessoas que mais assistiram algo dentro do MariaFlix em um determinado mês.
  • Relatório para verificar as TOP5 series mais assistidas dentro do MariaFlix em um determinado mês.
  • Relatório para verificar os TOP5 filmes mais assistidas dentro do MariaFlix em um determinado mês.
  • Refatorar carga de dados nas tabelas.
  • Refatorar função do relátorio de top 5 pessoas que mais asitiram algo
  • Fazer documentação com swagger api

RODANDO O PROJETO


  1. Com o python instalado faça o clone do repositório

  2. Caso não tenha uma virtualenv, instale com: pip install virtualenv

    2.1 Depois crie a virtualenv : virtualenv venv

    2.2 E ative com:

OS X & Linux

source venv/bin/activate

Windows:

source venv/Scripts/activate
  1. Com a virtualenv ativa, instale rode: pip install -r requirements.txt

  2. Preecha no arquivo connection.example.py suas configurações do banco de dados.

  3. Rode o arquivo init.py para criar e popular as tabelas: python src/init.py

  4. Rode o arquivo api.py para iniciar o servidor e testar os endpoints: python src/api.py

Endpoints

Usuários


GET /user

Retorna todos os usuários

GET /user/:id

Retorna o usuário do id informado

Ex: /user/3

{ 
   "id_user": 3, 
   "mariaflix_user_name": "Alini",
   "email": "a.lini@kawaii.doll.br",
   "cpf": "27185602157",
   "cellphone": "8427802846 "
}

POST /user

Insere um novo usuário

{  
   "mariaflix_user_name": "Priscila Power",
   "email": "pri@queen.power.com",
   "cpf": "22321261901",
   "cellphone": "1239252772 "
}

POST /user/:id

Edita 1 atributo de 1 usuário

Ex: /user/3

{ 
   "column": "mariaflix_user_name",
   "value": "Alini Ribeiro"
}

DEL /user/:id

Exclui 1 usuário da base

Gêneros


GET /gender

Retorna todos os gêneros cadastrados

GET /gender/:id

Retorna o gênero do id informado

Ex: /gender/5

{
   "id_gender": 5,
   "gender_name": "Documentário"
}

POST /gender

Insere um novo gênero

{
   "gender_name": "Animação"
}

POST /gender/:id

Edita 1 atributo de 1 gênero

Ex: /user/3

{ 
   "column": "gender_name",
   "value": "Terror"
}

DEL /gender/:id

Exclui 1 gênero da base

Filmes


GET /films

Retorna todos os filmes cadastrados

GET /films/:id

Retorna o filme do id informado

Ex: /films/19

{
   "id_film": 19,
   "film_name": "O Império Contra-ataca",
   "duration": "02:07:00",
   "release_year": "1980",
   "gender_name": "Ficção científica"
   }

POST /films

Insere um novo filme

{
   "film_name": "Beleza Oculta",
   "duration": "01:37:00",
   "release_year": "2016",
   "id_gender": 1
}

POST /films/:id

Edita 1 atributo de 1 filme

Ex: /user/22

{ 
   "column": "id_gender",
   "value": 14
}

DEL /films/:id

Exclui 1 filme da base

Series


GET /series

Retorna todos os seriados cadastrados

GET /series/:id

Retorna o seriado do id informado

Ex: /series/3

{
   "id_serie": 3,
   "serie_name": "Biohackers",
   "seasons_quantity": 1,
   "gender_name": "Ficção científica"
   }

POST /series

Insere um novo seriado

{
   "serie_name": "Demon Slayer",
   "seasons_quantity": 2,
   "id_gender": 2
}

POST /series/:id

Edita 1 atributo de 1 seriado

Ex: /series/5

{ 
   "column": "seasons_quantity",
   "value": 1
}

DEL /series/:id

Exclui 1 seriado da base

Temporadas


GET /seasons

Retorna todas as temporadas cadastradas

GET /seasons/:id

Retorna a temporada do id informado

Ex: /seasons/2

{
   "id_season": 2,
   "season_number": 2,
   "episodes_quantity": 8,
   "serie_name": "Sex Education"
   }

POST /seasons

Insere uma nova temporada

{  
   "season_number": 3,
   "episodes_quantity": 8,
   "id_serie": 1
}

POST /seasons/:id

Edita 1 atributo de 1 temporada

Ex: /seasons/5

{ 
   "column": "episodes_quantity",
   "value": 10s
}

DEL /seasons/:id

Exclui 1 temporada da base

Episódios


GET /episodes

Retorna todos os episódios cadastrados

GET /episodes/:id

Retorna o episódio do id informado

Ex: /episodes/55

{
   "id_episode": 55,
   "episode_name": "Suspicion",
   "episode_number": 3,
   "id_season": 7
   }

POST /episodes

Insere um novo episódio

{
   "episode_name": "Pilot",
   "episode_number": 1,
   "id_season": 1
}

POST /episodes/:id

Edita 1 atributo de 1 episódio

Ex: /episodes/78

{ 
   "column": "episode_number",
   "value": 10
}

DEL /episodes/:id

Exclui 1 episódio da base

Usuário para episódio


GET /userEpisode

Retorna todos os episódios associados aos usuários

GET /userEpisode/:id_user

Retorna todos os episódios associados ao usuário informado

GET /userEpisode/:id_user/:id_episode

Retorna o episódio associado ao usuário dos ids informados

Ex: /userEpisode/3/66

{
   "id_episode": 66,
   "id_user": 3,
   "watched_date": "2020-04-10"
}

POST /userEpisode

Insere um novo episódio

{
   "id_episode": 77,
   "id_user": 3,
   "watched_date": "2020-04-10"
}

POST /userEpisode/:id_user/:id_episode

Edita 1 atributo de 1 usuário associado ao episódio

Ex: /userEpisode/3/78

{ 
   "column": "watched_date",
   "value": "2020-04-10"
}

DEL /userEpisode/:id_user/:id_episode

Exclui 1 usuário associado ao episódio

Usuário para filme


GET /userFilm

Retorna todos os filmes associados aos usuários

GET /userFilm/:id_film

Retorna todos os filmes associados ao usuário informado

GET /userFilm/:id_user/:id_film

Retorna o filme associado ao usuário dos ids informados

Ex: /userFilm/8/1

{
   "id_film": 1,
   "id_user": 8,
   "watched_date": "2020-04-02"
}

POST /userFilm

Insere um novo filme

{
   "id_film": 5,
   "id_user": 3,
   "watched_date": "2020-10-10"
}

POST /userFilm/:id_user/:id_film

Edita 1 atributo de 1 usuário associado ao filme

Ex: /userFilm/3/5

{ 
   "column": "watched_date",
   "value": "2020-06-12"
}

DEL /userFilm/:id_user/:id_film

Exclui 1 usuário associado ao filme

Filmes assitidos


GET /allWatchedFilms/:id

Retorna todos os filmes assistidos pelo usuário com detalhes

Temporadas assitidas


GET /allWatchedSeries/:id

Retorna todas as temporadas completas assistidos pelo usuário informado

TOP 5


GET /topFiveByAny/:id

Retorna o top 5 de usuários que mais assistiram algo no mês informado

TOP 5 - por filmes


GET /topFiveByFilms/:month

Retorna o top 5 de usuários que assistiram mais filmes no mês informado
Valores que podem ser usados em month:

[01 , 02, 03 , 04 , 05, 06 , 07 , 08 , 09 , 10 , 11 , 12]

TOP 5 - por séries


GET /topFiveBySeries/:month

Retorna o top 5 de usuários que assistiram mais séries no mês informado
Valores que podem ser usados em month:

[01 , 02, 03 , 04 , 05, 06 , 07 , 08 , 09 , 10 , 11 , 12]

TOP 5 filmes


GET /topFiveWatchedFilms/:month

Retorna o top 5 de filmes mais assistidos no mês informado
Valores que podem ser usados em month:

[01 , 02, 03 , 04 , 05, 06 , 07 , 08 , 09 , 10 , 11 , 12]

TOP 5 séries


GET /topFiveWatchedSeries/:month

Retorna o top 5 de séries mais assistidas no mês informado
Valores que podem ser usados em month:

[01 , 02, 03 , 04 , 05, 06 , 07 , 08 , 09 , 10 , 11 , 12]

Agradecimentos

Quero agradecer a todas as mulheres incríveis que conheci, todo o conhecimento adquirido e todas as risadas que foram possíveis graças ao MVCAD, espero um dia fazer pela comunidade tanto quanto vocês fazem.

Vocês fazem a diferença
Jéssica Alves
Alini Ribeiro
Priscila Power
Luciane Tedesco
Suzane Sant Ana

About

projeto final do MVCAD 2020

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages