Finishing the Data API client.
parent
21f5227844
commit
65b39e4bb8
|
@ -1,5 +1,6 @@
|
|||
from datetime import datetime
|
||||
import json
|
||||
import os
|
||||
from time import time
|
||||
|
||||
import requests
|
||||
|
||||
|
@ -42,43 +43,105 @@ class DataAPI:
|
|||
else:
|
||||
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
|
||||
Este método é responsável pela execução dos comandos SQL no Banco de Dados remoto.
|
||||
|
||||
---
|
||||
#### Parâmetros:
|
||||
- table: 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)
|
||||
#### Parâmetros de dataAPI_request:
|
||||
- Col: Nome da tabela SQL em que se quer realizar a operação (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)
|
||||
- C: Create (Cria uma nova tabela)
|
||||
- D: Delete (Deleta uma tabela ou as colunas 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
|
||||
- id: Identificador da instância (linha) da tabela que se quer realizar a operação
|
||||
- data: Dados que se quer inserir na tabela
|
||||
- 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
|
||||
- Data: Dados que se quer inserir na tabela
|
||||
|
||||
---
|
||||
#### Retorna:
|
||||
-> O retorno do comando feito, qualquer que seja ele.
|
||||
"""
|
||||
|
||||
request_body = {
|
||||
"Col": table,
|
||||
"Op": operation,
|
||||
"Q": sql_attribute,
|
||||
"Id": id,
|
||||
"Data": data
|
||||
}
|
||||
return self.__request_json_post__(dataAPI_request)
|
||||
|
||||
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 já 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) {
|
||||
# response = &DataAPIResponse{}
|
||||
# err = c.Httpcli.JsonPost("/", request, response)
|
||||
# return
|
||||
# }
|
||||
table_check = self.do({
|
||||
"Col": register_table,
|
||||
"Op": "R",
|
||||
"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"
|
||||
|
|
Loading…
Reference in New Issue