From 65b39e4bb82b807462d44621e03cecc02acf2ae0 Mon Sep 17 00:00:00 2001 From: Pedro de Oliveira Guedes Date: Thu, 20 Jan 2022 09:12:44 -0300 Subject: [PATCH] Finishing the Data API client. --- api/dataapi/cli.py | 107 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 85 insertions(+), 22 deletions(-) diff --git a/api/dataapi/cli.py b/api/dataapi/cli.py index 4b2f952..3be0bb6 100644 --- a/api/dataapi/cli.py +++ b/api/dataapi/cli.py @@ -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 -# } \ No newline at end of file + 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"