Finishing the Data API client.

data_sync
Pedro de Oliveira Guedes 2022-01-20 09:12:44 -03:00
parent 21f5227844
commit 65b39e4bb8
1 changed files with 85 additions and 22 deletions

View File

@ -1,5 +1,6 @@
from datetime import datetime
import json import json
import os from time import time
import requests import requests
@ -42,43 +43,105 @@ class DataAPI:
else: else:
return res.text return res.text
def do (self, table: str, operation: str, id: str = "*", sql_attribute: str = "*", data: dict = {}): def do (self, dataAPI_request: dict):
""" """
## DataAPI Do ## DataAPI Do
Este método é responsável pela execução dos comandos SQL no Banco de Dados remoto. Este método é responsável pela execução dos comandos SQL no Banco de Dados remoto.
--- ---
#### Parâmetros: #### Parâmetros de dataAPI_request:
- table: Nome da tabela SQL em que se quer realizar a operação (OBRIGATÓRIO) - Col: Nome da tabela SQL em que se quer realizar a operação (OBRIGATÓRIO)
- operation: Operação que se quer desenvolver. São elas: "R", "C", "D", "U" (OBRIGATÓRIO) - Op: Operação que se quer desenvolver. São elas: "R", "C", "D", "U" (OBRIGATÓRIO)
- R: Retrieve (Busca informações da coluna da tabela) - R: Retrieve (Busca informações da coluna da tabela)
- C: Create (Cria uma nova tabela) - C: Create (Cria uma nova tabela)
- D: Delete (Deleta uma tabela ou as colunas de uma tabela) - D: Delete (Deleta uma tabela ou as colunas de uma tabela)
- U: Update (Atualiza as informações de uma tabela) - U: Update (Atualiza as informações de uma tabela)
- sql_attribute: Nome do atributo (coluna) que se quer consultar ou alterar na tabela SQL - Q: Nome do atributo (coluna) que se quer consultar ou alterar na tabela SQL
- id: Identificador da instância (linha) da tabela que se quer realizar a operação - Id: Identificador da instância (linha) da tabela que se quer realizar a operação
- data: Dados que se quer inserir na tabela - Data: Dados que se quer inserir na tabela
--- ---
#### Retorna: #### Retorna:
-> O retorno do comando feito, qualquer que seja ele. -> O retorno do comando feito, qualquer que seja ele.
""" """
request_body = { return self.__request_json_post__(dataAPI_request)
"Col": table,
"Op": operation,
"Q": sql_attribute,
"Id": id,
"Data": data
}
return self.__request_json_post__(request_body) def registrar_exec (self, register_table: str, check: bool):
"""
## Registrar Execução
Esta função é utilizada para realizar um registro de execuções falhas e bem sucedidas de um robô. Tudo é feito diretamente na Base de Dados remota, eliminando a necessidade de planilhas Excel locais.
---
#### Parâmetros:
- register_table: Tabela utilizada para os registros de execução. Para começos de projeto, procure criar uma nova tabela, cheque se ela existe utilizando a operação de Retrieve pelo método Do.
- check: Assume dois valores dependendo do sucesso da execução do robô: True ou False.
- True: Execução obteve sucesso.
- False: Execução falhou em algum ponto.
---
#### Retorna:
---
"""
# func (c *Cli) Do(request *DataAPIRequest) (response *DataAPIResponse, err error) { table_check = self.do({
# response = &DataAPIResponse{} "Col": register_table,
# err = c.Httpcli.JsonPost("/", request, response) "Op": "R",
# return "Q": f"@[?date=='{datetime.now().isoformat()}']"
# } })
if len(table_check["data"]) > 0:
data = table_check["data"][0]
id = str(int(data["ID"]))
if check:
success = int(data["exec"]) + 1
try:
self.do({
"Col": register_table,
"Op": "U",
"Id": id,
"Data": {
"exec": success
}
})
except:
return "Algo falhou ao registrar a execução"
else:
fail = int(data["err"]) + 1
try:
self.do({
"Col": register_table,
"Op": "U",
"Id": id,
"Data": {
"err": fail
}
})
except:
return "Algo falhou ao registrar a execução"
else:
if check:
success = 1
fail = 0
else:
success = 0
fail = 1
try:
self.do({
"Col": register_table,
"Op": "C",
"Data": {
"date": datetime.now().isoformat(),
"exec": success,
"err": fail,
}
})
except:
return "Algo falhou ao registrar a execução"