Classe utilizada na montagem de Querys dinâmicas das API-REST's, considerando o padrão TotvsAPI (filtro simples, complexo (odata), ordenação, etc...).
Todos os métodos da classe são estáticos, portanto eles podem ser utilizados diretamente 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. Caso seja necessário incluir algum filtro adicional, ele deverá ser feito antes da chamada do método, alimentando a variável cQuery. Exemplo Exemplo1:
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
TEMP-TABLE ttDocument:HANDLE,
oRequest,
cQuery).
Exemplo2:
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
TEMP-TABLE ttDocument:HANDLE,
oRequest,
cQuery,
TEMP-TABLE docFiscPersistent:HANDLE,
"xmlFile,documentStatus":U,
FALSE).
Exemplo3:
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
TEMP-TABLE ttDocument:HANDLE,
oRequest,
cQuery,
TEMP-TABLE docFiscPersistent:HANDLE,
"xmlFile,documentStatus":U,
FALSE,
"search,filter":U,
"des-nota":U).
|
buildWhere ( cTable, hTempTable, oQueryParams, cQuery [, cExceptions , lMatches ] ) Parâmetros:
Retorno (CHARACTER): O comando WHERE. | Retorna o comando WHERE para ser usado na QUERY. Exemplo Exemplo1:
ASSIGN cQuery = JsonAPIQueryUtils:buildWhere("cliente":U,
TEMP-TABLE ttCustomer:HANDLE,
oRequest:getQueryParams(),
cQuery).
Exemplo2:
ASSIGN cQuery = JsonAPIQueryUtils:buildWhere("cliente":U,
TEMP-TABLE ttCustomer:HANDLE,
oRequest:getQueryParams(),
cQuery,
"status,address",
TRUE).
|
buildBy ( hTempTable, oOrder [, hMainTempTable] ) Parâmetros:
Retorno (CHARACTER): O comando BY. | Retorna o comando BY para ser usado na QUERY. Exemplo Exemplo1:
ASSIGN cQuery = cQuery
+ JsonAPIQueryUtils:buildBy(TEMP-TABLE ttCustomer:HANDLE,
oRequest:getOrder()).
Exemplo2:
ASSIGN cQuery = cQuery
+ JsonAPIQueryUtils:buildBy(TEMP-TABLE ttCustomer:HANDLE,
oRequest:getOrder(),
TEMP-TABLE clientPersistent:HANDLE).
|
getFieldName ( pTempTable, pSerializeName ) Parâmetros:
Retorno (CHARACTER): Nome do Campo. | Retorna o nome campo da TempTable com base no SERIALIZE-NAME informado. Exemplo ASSIGN cFieldName =
JsonAPIQueryUtils:getFieldName(ITEMP-TABLE ttCustomer:HANDLE,
"code").
|
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. Exemplo ASSIGN cDataType =
JsonAPIQueryUtils:getFieldDataType(ITEMP-TABLE ttCustomer:HANDLE,
"code").
|
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()).