Histórico da Página
Classe utilizada na montagem de Querys dinâmicas das API-REST's, considerando o padrão TotvsAPI (filtro simples, complexo (odata), ordenação, etc...).
Informações |
---|
Todos os métodos da classe são estáticos, portanto eles podem ser utilizados diretamente se sem a necessidade de instanciar a classe. |
Métodos
Nome | Descrição |
---|---|
buildCompleteQuery ( cTable, hTempTable, oRequest, cQuery [, hMainTempTable , cExceptions , lMatches ] [, |
cSearchListParams, cSearchListFields ] ) Parâmetros:
|
|
|
Retorno (CHARACTER): QUERY completa. | Retornar a QUERY completa com o WHERE e BY.
|
Retorno (CHARACTER): QUERY completa.
Retornar a QUERY completa com o WHERE e BY.
Informações |
---|
Caso seja necessário incluir algum filtro adicional, ele deverá ser feito antes da chamada do método, alimentando a variável cQuery. |
language | js |
---|---|
title | Exemplo |
|
| |
buildWhere ( cTable, hTempTable, |
oQueryParams, cQuery [, cExceptions , lMatches ] ) Parâmetros:
|
|
|
Retorno (CHARACTER): O comando WHERE. | Retorna o comando WHERE para ser usado na QUERY.
|
buildBy ( |
hTempTable, |
oOrder [, |
hMainTempTable] |
) Parâmetros: |
|
|
|
|
|
Retorno ( |
CHARACTER): |
O comando BY. |
Retorna o comando BY para ser usado na QUERY.
|
xxxxx.
/*----------------------------------------------------------------------------------------------
Propósito:
-
Parâmetros:
1) cTable - Tabela principal da Query
2) hTempTable - Handle da TempTable que é utilizado para enviar os dados para o HTML
3) oQueryParams - JsonObject com os QUERY PARAMS que foram informados na URL
4) cQuery - QUERY já existente
Retorno:
- O comando WHERE que deve ser usado na QUERY
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER buildWhere (INPUT cTable AS CHARACTER,
INPUT hTempTable AS HANDLE,
INPUT oQueryParams AS JsonObject,
INPUT cQuery AS CHARACTER):
RETURN buildWhere (cTable, hTempTable, oQueryParams, cQuery, "", TRUE).
END METHOD.
/*----------------------------------------------------------------------------------------------
Propósito:
- Retorna o comando WHERE que deve ser usado na QUERY
Parâmetros:
1) cTable - Tabela principal da Query
2) hTempTable - Handle da TempTable que é utilizado para enviar os dados para o HTML
3) oQueryParams - JsonObject com os QUERY PARAMS que foram informados na URL
4) cQuery - QUERY já existente
5) cExceptions - Lista de campos que não devem ser considerados na moontagem do comando,
a lista deve ser informada separando os campos por vírgula e deve ser
usado o SERIALIZE-NAME, exemplo: "name,code"
6) lMatches - Indica que deve usar MATCHES no lugar da igualdade para campos caracter
Retorno:
- O comando WHERE que deve ser usado na QUERY
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER buildWhere (INPUT cTable AS CHAR,
INPUT hTempTable AS HANDLE,
INPUT oQueryParams AS JsonObject,
INPUT cQuery AS CHARACTER,
INPUT cExceptions AS CHARACTER,
INPUT lMatches AS LOGICAL):
xxxxxxx
END METHOD.
/*----------------------------------------------------------------------------------------------
Propósito:
- Retorna o comando BY que deve ser usado na QUERY
Parametros:
1) hTempTable - Handle da TempTable que é utilizado para enviar os dados para o HTML
2) oOrder - O JsonArray contendo o QUERY PARAM order
Retorno:
- O comando BY que deve ser usado na QUERY
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER buildBy (INPUT hTempTable AS HANDLE,
INPUT oOrder AS JsonArray):
RETURN buildBy(hTempTable, oOrder, ?).
END METHOD.
/*----------------------------------------------------------------------------------------------
Propósito:
- Retorna o comando BY que deve ser usado na QUERY somente com campos da temp-table principal
Parametros:
1) hTempTable - Handle da TempTable que é utilizado para enviar os dados para o HTML
2) oOrder - O JsonArray contendo o QUERY PARAM order
3) hMainTempTable - TempTable da tabela principal
Retorno:
- O comando BY que deve ser usado na QUERY
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER buildBy (INPUT hTempTable AS HANDLE,
INPUT oOrder AS JsonArray,
INPUT hMainTempTable AS HANDLE):
xxxxx
END METHOD.
/*----------------------------------------------------------------------------------------------
Proposito:
- Retorna o nome do campo da TEMP-TABLE com base no SERIALIZE-NAME informado
Parametros:
1) pTempTable - HANDLE da TEMP-TABLE
2) pSerializeName - SERIALIZE-NAME do campo
Retorno:
- Nome do campo na TEMP-TABLE
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER getFieldName (INPUT pTempTable AS HANDLE,
INPUT pSerializeName AS CHARACTER):
RETURN getFieldProperty("NAME", pTempTable, pSerializeName).
END METHOD.
/*----------------------------------------------------------------------------------------------
Proposito:
- Retorna o tipo de dado do campo da TEMP-TABLE com base no SERIALIZE-NAME informado
Parametros:
1) pTempTable - HANDLE da TEMP-TABLE
2) pSerializeName - SERIALIZE-NAME do campo
Retorno:
- Tipo de dado do campo em forma de string, exemplo: CHARACTER, INTEGER, LOGICAL
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER getFieldDataType (INPUT pTempTable AS HANDLE,
INPUT pSerializeName AS CHARACTER):
RETURN getFieldProperty("DATA-TYPE", pTempTable, pSerializeName).
END METHOD.
/*----------------------------------------------------------------------------------------------
Proposito:
- Retorna o valor de uma propriedade do campo da TEMP-TABLE com base no SERIALIZE-NAME informado
Parametros:
1) pProperty - Propriedade
2) pTempTable - HANDLE da TEMP-TABLE
3) pSerializeName - SERIALIZE-NAME do campo
Retorno:
- Nome do campo na TEMP-TABLE
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER getFieldProperty (INPUT pProperty AS CHARACTER,
INPUT pTempTable AS HANDLE,
INPUT pSerializeName AS CHARACTER):
xxxxxxxxxxxxxxxx
END METHOD.
END CLASS.
...
| ||||||||
getFieldName ( pTempTable, pSerializeName ) Parâmetros:
Retorno (CHARACTER): Nome do Campo. | Retorna o nome campo da TempTable com base no SERIALIZE-NAME informado.
| |||||||
getFieldDataType ( pTempTable, pSerializeName ) Parâmetros:
Retorno (CHARACTER): Tipo de dado do Campo. Exemplo: CHARACTER, INTEGER, LOGICAL. | Retorna o tipo de dado do campo da TempTable com base no SERIALIZE-NAME informado.
|
Bloco de código | ||
---|---|---|
| ||
Exemplo1: DEFINE VARIABLE cQuery AS CHARACTER NO-UNDO. DEFINE VARIABLE oRequest AS JsonAPIRequestParser NO-UNDO. ASSIGN oRequest = NEW JsonAPIRequestParser(oInput). ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U, TEMP-TABLE ttDocument:HANDLE, oRequest, cQuery, TEMP-TABLE docFiscPersistent:HANDLE, "xmlFile,documentStatus":U, FALSE, "search":U, "des-nota":U). ------------------------------------------------------------------------------------------- Exemplo2: DEFINE VARIABLE cQuery AS CHARACTER NO-UNDO. DEFINE VARIABLE oRequest AS JsonAPIRequestParser NO-UNDO. ASSIGN oRequest = NEW JsonAPIRequestParser(oInput). ASSIGN cQuery = JsonAPIQueryUtils:buildWhere("cliente":U, TEMP-TABLE ttCustomer:HANDLE, oRequest:getQueryParams(), cQuery). ASSIGN cQuery = cQuery + IF INDEX(cQuery, "WHERE":U) > 0 THEN ' AND ':U ELSE ' WHERE ':U + ' log_bloqueado = no '. ASSIGN cQuery = cQuery + JsonAPIQueryUtils:buildBy(TEMP-TABLE ttCustomer:HANDLE, oRequest:getOrder()). |
...