- Objetivo
- Contexto da solução
- Desenho arquitetural da solução
- Pré-requisitos
- Passos para subir os serviços necessários para o teste
Utilizar a API da Marvel para buscar todos os Comics e Characters.
Consiste em criar dois serviços em Docker:
- Container da linguagem de programação Python para conectar com API para buscar, processar e salvar os dados requisitados
- Container do banco de dados MySQL para salvar os dados processados
- Clonando o repositório por SSH
$ git clone [email protected]:albertosilvabr/marvel-api.git
- Iniciando os serviçes do MySQL e Python
$ cd marvel-api
$ make start-services
- Check se os serviços foram iniciandos
$ docker ps
output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d772b479a064 marvel-api_python "python3" 14 minutes ago Up 14 min. python
f6f37f692661 mysql:latest "docker-entrypoint.s…" 14 minutes ago Up 14 min. 0.0.0.0:3306->3306/tcp mysql
- Buscando os dados de Characters e Comics
$ make get-data-marvel-api
Neste passo será solicitado a public key e private key necessárias para requisitar os dados via API. Veja como consegui-las em: (https://developer.marvel.com/account)
Entre com sua public key:
Após informar a public key e private key, as seguintes etapas serão executadas
Step 1: Criando tabelas Characters e Comics
Tabelas criadas com sucecesso!
Step 2: Buscando dados de Characters
Busca realizada com sucesso!
Step 3: Buscando dados de Comics
Busca realizada com sucesso!
Step 4: Criando a tabela OBT
Tabela OBT criada com sucesso!
Processo finalizado com sucesso!
- Consultando os dados salvosdas tabelas criadas no banco MySQL através do CLI
- Acessando o MySQL CLI
$ make mysql-cli
- Login para executar query via linha de comando, informe este password rootpass quando solicitado
bash-4.4# mysql -u root -p
Enter password:
- Listando os bancos de dados
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| marveldb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
- Selecionando o banco de dados marveldb
mysql> USE marveldb;
- Consultando os dados da tabela Characters;
mysql> SELECT id, name FROM characters LIMIT 4;
+---------+--------------+
| id | name |
+---------+--------------+
| 1011334 | 3-D Man |
| 1017100 | A-Bomb (HAS) |
| 1009144 | A.I.M. |
| 1010699 | Aaron Stack |
+---------+--------------+
4 rows in set (0.00 sec)
- Consultando os dados da tabela Comics;
mysql> SELECT id, title FROM comics LIMIT 4;
+-------+--------------------------+
| id | title |
+-------+--------------------------+
| 82967 | Marvel Previews (2017) |
| 82965 | Marvel Previews (2017) |
| 82970 | Marvel Previews (2017) |
| 37504 | Marvels Vol. 1 (1994) #7 |
+-------+--------------------------+
4 rows in set (0.00 sec)
- Consultando os dados da tabela OBT
mysql> SELECT character_id
, MID(character_description,1,30) AS character_description
, comic_id
, MID(title_comic,1,30) AS title_comic
, format_comic
FROM obt_marvel LIMIT 2;
+--------------+-----------------------+----------+----------------------+------------------------+
| character_id | character_description | comic_id | title_comic | format_comic |
+--------------+-----------------------+----------+----------------------+------------------------+
| 1009144 | AIM is a terrorist o | 103371 | Avengers Unlimited I | Digital Vertical Comic |
| 1009368 | Wounded, captured an | 103371 | Avengers Unlimited I | Digital Vertical Comic |
+--------------+-----------------------+----------+----------------------+------------------------+
2 rows in set (0.00 sec)