Anime Stock é um sistema para o armazenamento de animes.
Trabalhar seus conhecimentos de Flask, PostgreSQL, Blueprints e Psycopg2.
- Crie um banco de dados chamado anime_stock
Em seguida, dentro do banco de dados anime_stock,** você deve criar uma TABELA seguindo o padrão abaixo:
- NOME DA TABELA: animes
- id: BIGSERIAL PRIMARY KEY
- anime: VARCAHR(100) NOT NULL UNIQUE
- released_date: DATE NOT NULL
- seasons: INTEGER NOT NULL
OBS: Siga as especificações da tabela conforme o solicitado, caso contrário, iremos desconsiderar sua tabela.
Você deverá seguir a seguinte estrutura de pastas:
├── app
│ ├── __init__.py
│ ├── services
│ │ └── __init__.py
│ └── views
│ └── __init__.py
├── .gitignore
└── requirements.txt
Todos os exemplos de entradas e saídas estão neste link.
OBS: Os retornos > NÃO < precisam seguir na mesma ordem apresentada.
A conexão com o banco de dados deve ser feita através do PSYCOPG2.
OBS: Siga os endpoints, status code e assinatura da função conforme solicitado, dessa maneira estamos dentro da convenção API RESTFul. Caso contrário iremos descontar da nota final.
- Especificações da rota:
- Deve ser enfeitada pela blueprint :
- @bp_animes
- Assinatura da função:
- get_create()
- Deverá aceitar os métodos:
- POST e GET
- Deve ser enfeitada pela blueprint :
- Rotina e retorno da requsição no método POST:
- Verificação se as chaves do json mandado pelo usuário são compativeis com a sua tabela do banco de dados.
- Retorno CASO AS CHAVES SEJAM INVÁLIDAS:
- Um dicionário contendo um lista das chaves que são válidas e das chaves inválidas que foram mandadas.
- Status code 422
- Retorno CASO AS CHAVES SEJAM INVÁLIDAS:
- Criação da tabela no banco de dados caso ela não exista.
- O nome do anime deverá ser salvo como título.
- Inserção dos dados mandado pela requisição.
- Retorno CASO O ANIME JÁ EXISTA NA TABELA DO BANCO DE DADOS:
- Um dicionário dizendo que o anime já existe no banco de dados.
- Status code 422.
- Retorno CASO O ANIME NÃO EXISTA NA TABELA DO BANCO DE DADOS:
- Um dicionário com os dados do anime criado.
- Status code 201.
- Retorno CASO O ANIME JÁ EXISTA NA TABELA DO BANCO DE DADOS:
- Verificação se as chaves do json mandado pelo usuário são compativeis com a sua tabela do banco de dados.
- Rotina e retorno da requsição no método GET:
- Seleção de todos os dados dessa tabela.
- Retorno CASO A TABELA ESTEJA VAZIA OU NÃO EXISTA:
- Um dicionário com uma lista vazia.
- Status code 200.
- Retorno CASO TENHA DADOS NA TABELA:
- Um dicionário com uma lista de dicionários.
- Status code 200.
- Retorno CASO A TABELA ESTEJA VAZIA OU NÃO EXISTA:
- Seleção de todos os dados dessa tabela.
- Especificações da rota:
- Deve ser enfeitada pela blueprint :
- @bp_animes
- Assinatura da função:
- filter()
- Deverá aceitar o método:
- GET
- Rotina deverá ser:
- Seleção de um dado da tabela filtrado pelo id.
- Retorno:
- Caso haja dados na tabela deverá retornar:
- Um dicionário de dicionário.
- Status code 200.
- Caso não haja dados na tabela, não exista o respectivo id ou a tabela não exista deverá retornar:
- Um dicionário.
- Status code 404.
- Caso haja dados na tabela deverá retornar:
- Deve ser enfeitada pela blueprint :
- Especificações da rota:
- Deve ser enfeitada pela blueprint :
- @bp_animes
- Assinatura da função:
- update()
- Deverá aceitar o método:
- PATCH
- Rotina deverá ser:
- Verificação se as chaves do json mandado pelo usuário são compativeis com a sua tabela do banco de dados.
- Retorno CASO AS CHAVES SEJAM INVÁLIDAS:
- Um dicionário contendo um lista das chaves que são válidas e das chaves inválidas que foram mandadas.
- Status code 422
- Retorno CASO AS CHAVES SEJAM INVÁLIDAS:
- Caso tenha a chave anime o valor deverá ser salvo como título.
- Atualização dos dados do id mandado pela url da requisição com os dados da recebidos.
- Verificação se as chaves do json mandado pelo usuário são compativeis com a sua tabela do banco de dados.
- Retorno CASO O ANIME EXISTA:
- Um dicionário com os dados atualizados.
- Status code 200.
- Retorno CASO O ANIME ou TABELA NÃO EXISTAM:
- Um dicionário.
- Status code 404.
- Deve ser enfeitada pela blueprint :
- Especificações da rota:
- Deve ser enfeitada pela blueprint :
- @bp_animes
- Assinatura da função:
- delete()
- Deverá aceitar o método:
- DELETE
- Rotina deverá ser:
- Verificação se o id passado existe.
- Retorno CASO O ID EXISTA:
- Uma string -> no content.
- Status code 204.
- Retorno CASO O ID ou TABELA NÃO EXISTA:
- Um dicionário.
- Status code 404.
- Deve ser enfeitada pela blueprint :
- Link do repositório do GitLab
- Código fonte:
- Diretório app.
- Privacidade
- Incluir ka-br-out-2020-correcoes como reporter.
Pts | Dado | Quando | É esperado |
---|---|---|---|
2 | database e tabela | Verificado | Que siga o formato solicitado |
2 | blueprint | Verificado | Que siga o formato solicitado |
1 | estrutura de pastas | Verificado | Que siga o formato solicitado |
1 | psycopg2 | Verificado | Que faça todas as operações solicitadas no banco de dados |
2 | Rota get e post | Feita a requisição | Que retorne o esperado |
2 | Rota update delete | Feita a requisição | Que retorne o esperado |
Divirta-se! 🦊