2.3.3 • Published 2 years ago

@sap/dwf-ndso-backend v2.3.3

Weekly downloads
199
License
SEE LICENSE IN LI...
Repository
-
Last release
2 years ago

Native DataStore Object (NDSO) Service Backend

This Node.js package contains service implementations (tasks) of the Native DataStore Object. The NDSO backend is part of the SAP HANA Data Warehousing Foundation product.

As such it is used, for example, by the DataStore Manage UI of the Database Explorer or the Data Warehouse Scheduler.

Change Log

Be aware that as this being a technical reuse package you are not supposed to consume it directly in a custom application. It is used by the aforementioned SAP products/tools though.

NDSO Task Reference

NDSO tasks are exposed as simple asynchronous functions

activate(tracer, client1, client2, schema, ndso, loadIds, callback) ⇒ Promise

Moves data from inbound queue(s) to active data and change log. Writing of active data and change log is done by the HANA core procedure SYS.DSO_ACTIVATE_CHANGES.

This operation takes care of

  • verifying the provided load IDs
  • setting status of earlier, failed activations to 'DELETED'
  • compiling procedure options like aggregation behavior and before-image handling
  • calling the procedure
  • deleting load data from inbound queue(s)

Fulfills: ActivationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
loadIdsArray.<integer>load requests to be activated
callbackfunctioncallback function

addSubscriber(tracer, client1, client2, schema, ndso, subscriberName, description, callback) ⇒ Promise

Adds a new subscriber entry to the subscribers entity

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
subscriberNamestringname (and key) of the subscriber
descriptionstringoptional description
callbackfunctioncallback function

checkMetadataConsistency(tracer, client1, client2, schema, ndso, callback) ⇒ Promise

Performs consistency checks on the NDSO. The operation fails, if inconsistencies are found

Performed checks ensure:

  • Inbound queues consistency
  • Change log entries deleted for cleaned up activations
  • Inbound queue entries deleted for finished activations
  • Affected requests consistency

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
callbackfunctioncallback function

cleanupChangelog(tracer, client1, client2, schema, ndso, requestIds, callback) ⇒ Promise

Cleans up change log. The operation verifies, if the provided activation request IDs can be cleaned up and then deletes them from the change log

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
requestIdsArray.<integer>activation requests for which change log shall be deleted
callbackfunctioncallback function

cleanupMetadata(tracer, client1, client2, schema, ndso, maxRequestId, maxTimestamp, callback) ⇒ Promise

Cleans up metadata up to either the provided maximal activation request ID or corresponding creation timestamp (whichever is higher).

Fulfills: OperationResult
Todo

  • not implemented, i.e., it does not actually delete any data
ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
maxRequestIdintegerrequest ID up to which to clean up
maxTimestampstringISO 8601 UTC timestamp up to which to clean up
callbackfunctioncallback function

deleteAll(tracer, client1, client2, schema, ndso, callback) ⇒ Promise

Deletes all NDSO data (main and metadata entities). The operation fails, if there are subscribers

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
callbackfunctioncallback function

deleteRequest(tracer, client1, client2, schema, ndso, requestIds, callback) ⇒ Promise

Deletes load requests. The operation verifies, if the provided request IDs can be deleted and then deletes them from the inbound queue(s)

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
requestIdsArray.<integer>load requests to be deleted
callbackfunctioncallback function

deleteWithFilter(tracer, client1, client2, schema, ndso, queryOptions, propagateDeletion, callback) ⇒ Promise

Deletes active data by the provided query filter. Optionally writes an activation request into the change log which allows rollback

Fulfills: DeleteResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
queryOptionsQueryOptionsnote that for this task, the 'options' (and more specifically, the filter flt) are actually mandatory because the context is selective deletion from active data which must not be unrestricted (that would be deleteAll)
propagateDeletionboolif true, deletions will be added to change log
callbackfunctioncallback function

getDataStores(tracer, client, schema, queryOptions, callback) ⇒ Promise

Provides a list of NDSOs in the schema

Fulfills: DataStores

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
queryOptionsQueryOptions
callbackfunctioncallback function

getDataStoreFeature(tracer, client, schema, callback) ⇒ Promise

Provides information if the NDSO metamodel exists in the schema. The metamodel is a prerequisite to model NDSOs

Fulfills: DataStoreFeature

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
callbackfunctioncallback function

getLogForOperation(tracer, client, schema, ndso, operationId, callback) ⇒ Promise

Provides the message log for an operation

Fulfills: LogForOperation

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
operationIdintegerID of the operation logs shall be read for
callbackfunctioncallback function

getMetadata(tracer, client, schema, ndso, callback) ⇒ Promise

Provides NDSO metadata

Fulfills: Metadata

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
callbackfunctioncallback function

getMonitoringOverview(tracer, client, schema, queryOptions, callback) ⇒ Promise

Provides monitoring relevant information about all NDSOs in the schema.

Fulfills: MonitoringOverview

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
queryOptionsQueryOptions
callbackfunctioncallback function

getOperationInfo(tracer, client, schema, ndso, queryOptions, callback) ⇒ Promise

Provides general request information

Fulfills: OperationInfo

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
queryOptionsQueryOptions
callbackfunctioncallback function

getOperationsForRequest(tracer, client, schema, ndso, requestId, callback) ⇒ Promise

Provides the list of operations that affected a specific request

Fulfills: OperationsForRequest

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
requestIdintegerrequest ID which to retrieve operations for
callbackfunctioncallback function

getRequestInfo(tracer, client, schema, ndso, queryOptions, callback) ⇒ Promise

Provides general request information

Fulfills: RequestInfo

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
queryOptionsQueryOptions
callbackfunctioncallback function

getRequestsForActivation(tracer, client, schema, ndso, maxRequestId, callback) ⇒ Promise

Provides requests that can be activated. Condition:

  • finished load requests
  • after latest activation
  • not subject to a deleteRequest operation
  • (optional) load request ID lower than provided maxRequestId

Fulfills: RequestsForOperation

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
maxRequestIdintegerrequest ID up to which to retrieve load requests
callbackfunctioncallback function

getRequestsForCleanup(tracer, client, schema, ndso, maxRequestId, maxTimestamp, callback) ⇒ Promise

Provides requests that can be cleaned up. Condition:

  • finished activation requests
  • not subject to rollback/clean-up operation
  • extracted by all subscribers
  • (optional) activation request ID less than or equal to provided max ID or timestamp

Fulfills: RequestsForOperation

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
maxRequestIdintegerrequest ID up to which to fetch requests
maxTimestampstringISO 8601 UTC timestamp up to which to fetch requests
callbackfunctioncallback function

getRequestsForDeletion(tracer, client, schema, ndso, callback) ⇒ Promise

Provides requests that can be deleted. Condition:

  • load request failed OR finished and after latest activation
  • not subject to a deleteRequest operation

Fulfills: RequestsForOperation

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
callbackfunctioncallback function

getRequestsForRollback(tracer, client, schema, ndso, minRequestId, callback) ⇒ Promise

Provides requests that can be rolled back. Condition:

  • finished activation requests
  • after latest rollback/clean-up operation
  • not yet extracted by any subscriber (as rollbacks are just deleted from change log, subscribers won't get a corresponding delta corrupting their data)
  • (optional) load request ID greater than or equal to provided minRequestId

Fulfills: RequestsForOperation

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
minRequestIdintegerrequest ID from which to roll back later activations
callbackfunctioncallback function

getRowcountWithFilter(tracer, client, schema, ndso, queryOptions, callback) ⇒ Promise

Provides number of rows in active data filtered by the provided query filter

Fulfills: RowcountWithFilter

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
queryOptionsQueryOptionsnote that for this task, the 'options' (and more specifically, the filter flt) are actually mandatory because this is a preview task for deleteWithFilter
callbackfunctioncallback function

getSubscribers(tracer, client, schema, ndso, callback) ⇒ Promise

Provides a list of subscribers

Fulfills: Subscribers

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
clientobjectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
callbackfunctioncallback function

removeSubscriber(tracer, client1, client2, schema, ndso, subscriberName, callback) ⇒ Promise

Removes a subscriber from the subscribers entity

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
subscriberNamestringname (and key) of the subscriber
callbackfunctioncallback function

repairRunningOperations(tracer, client1, client2, schema, ndso, callback) ⇒ Promise

Repairs running operations that are not really running anymore and sets their status to failed. This is done by attempting to retrieve a lock for the corresponding entry in the operation history

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
callbackfunctioncallback function

resetSubscriber(tracer, client1, client2, schema, ndso, subscriberName, callback) ⇒ Promise

Resets maxRequestId of a subscriber in the subscribers entity back to 0

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
subscriberNamestringname (and key) of the subscriber
callbackfunctioncallback function

rollback(tracer, client1, client2, schema, ndso, activationIds, callback) ⇒ Promise

Restores data from the change log back to active data. Writing of active data and change log is done by the HANA core procedure SYS.DSO_ROLLBACK_CHANGES.

This operation takes care of

  • verifying the provided activation IDs
  • compiling procedure options like aggregation behavior and before-image handling
  • calling the procedure

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
activationIdsArray.<integer>activation requests to roll back
callbackfunctioncallback function

storeCsv(tracer, client1, client2, schema, ndso, iqName, data, withHeader, callback) ⇒ Promise

Loads CSV data into the provided inbound queue.

If the data contain a header row, it is excluded from data but serves as field list for the INSERT statement.

Data is generally loaded by just providing the data unaltered to the prepared statement except for binary data types (VARBINARY, BLOB) where a hexadecimal string is expected instead

Fulfills: LoadResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
iqNamestringinbound queue to load the data into
dataarray | stringCSV data as array or string
withHeaderboolload requests to be activated
callbackfunctioncallback function

storeSql(tracer, client1, client2, schema, ndso, iqName, externalSql, callback) ⇒ Promise

Loads data into the provided inbound queue by the FROM clause provided via externalSql.

externalSql needs to provide technicalAttributes.recordMode and all semantical column names as the inbound queue (if the source table has different column names, they must be aliased accordingly).

Fulfills: LoadResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
iqNamestringinbound queue to load the data into
externalSqlstringSQL by which to load data (used as FROM clause)
callbackfunctioncallback function

Example

 SELECT
   ''    AS "technicalAttributes.recordMode",
   CUST  AS "CustomerName",
   PRICE AS "Amount"
 FROM CUST_PRICES

smokeTest(tracer, client1, client2, schema, ndso, callback) ⇒ Promise

Performs a smoke test on the provided NDSO, executing all tasks, beginning with operations related to subscribers, then deletes all of them and runs deleteAll to have a defined start-state

:warning: Only use this in test environments!

Fulfills: OperationResult

ParamTypeDescription
tracerobjecttracer e.g. by @sap/logging
client1objectDB client by node-hdb or @sap/hana-client
client2objectDB client by node-hdb or @sap/hana-client
schemastringDB schema
ndsostringfull DataStore name with namespace
callbackoperationCallbackcallback function

ActivationResult

Properties

NameTypeDescription
operationIdintegerID of the activate operation
activationIdintegerID of the resulting activation request

DeleteResult

Properties

NameTypeDescription
operationIdintegerID of the deleteWithFilter operation
changeLogIdintegerID of the optional activation request

DataStores

Properties

NameTypeDescription
resultArray.<string>NDSO names

DataStoreFeature

Properties

NameTypeDescription
isDataStoreActivebooltrue, if metamodel found
versionstringmodel version

LogForOperation

Properties

NameTypeDescription
resultArray.<object>
result.positintegerdefines message order
result.timestampstringISO 8601 UTC timestamp of message creation
result.msgTypestringmessage severity
result.msgNumberintegernumeric message ID
result.msgTextstringmessage text

MetadataMetaTable

Properties

NameTypeDescription
namestringentity name of the meta table
fullNamestringfully qualified and quoted table name including schema and namespace

MetadataActiveDataField

Properties

NameTypeDescription
namestringfield name
isKeyboolindicates, if field is a semantical key
aggregationstringdefines before-image behavior (NOP or SUM)
sqlDataTypenamestringHANA data type
typeParam1integerparameter attribute 1 (e.g. length)
typeParam2integerparameter attribute 2 (e.g. scale)
defaultValuestringdefault value

MetadataChangeLogField

Properties

NameTypeDescription
namestringfield name
isKeyboolindicates, if field is a semantical key
sqlDataTypenamestringHANA data type

MetadataInboundQueueField

Properties

NameTypeDescription
namestringfield name
isKeyboolindicates, if field is a semantical key
aggregationstringdefines aggregation behavior (NOP, MOV, MIN, MAX or SUM)
sqlDataTypenamestringHANA data type
typeParam1integerparameter attribute 1 (e.g. length)
typeParam2integerparameter attribute 2 (e.g. scale)
defaultValuestringdefault value

MetadataProcedure

Properties

NameTypeDescription
namestringqualified name of the procedure (with namespace, without schema)
ifVersionstringinterface version of the procedure in the form X.Y (e.g. 1.0), major version incremented for backwards incompatible changes and minor for backwards compatible changes

Metadata

Properties

NameTypeDescription
namestringNDSO name
snapshotSupportboolif true, every activation will overwrite the complete active data table, i.e., inbound queue data is considered to always be complete
operationHistoryMetadataMetaTableoperation history containing operation ID, timestamp, user, status etc.
affectedRequestsMetadataMetaTablemapping table of n:m relation of operations to requests
aggregationHistoryMetadataMetaTablestores aggregation behavior on activation. Needed to account for model changes between activation and rollback
logMessagesMetadataMetaTablelog messages per operation
idGenMetadataMetaTableindicates request type (load, activation, general operation). Without sequence, new IDs are drawn based on the content of this table
subscribersMetadataMetaTablestores subscribers doing delta-extractions from the change log. The latest extracted activation requests are written by each subscriber and affect housekeeping, like cleanupChangelog
activeDataobjectmain, reportable data entity
activeData.namestringentity name of the data table
activeData.fullNamestringfully qualified and quoted table name including schema and namespace
activeData.fieldsArray.<MetadataActiveDataField>
changeLogobjectoptional data entity to track changes
changeLog.namestringentity name of the data table
changeLog.fullNamestringfully qualified and quoted table name including schema and namespace
changeLog.fieldsArray.<MetadataChangeLogField>
activationQueuesArray.<object>one or more data entity to queue inbound data for activation
activationQueues.namestringentity name of the data table
activationQueues.fullNamestringfully qualified and quoted table name including schema and namespace
activationQueues.fieldsArray.<MetadataInboundQueueField>
proceduresobject.<string, MetadataProcedure>map of supported SQL procedures. Key is the operation identifier, e.g. LOAD
sequencestringsequence used to draw new IDs
metaModelobjectinformation about current NDSO metamodel
metaModel.versionstringmetamodel version

MonitoringTableStats

Properties

NameTypeDescription
tableNamestringtable name
sizeintegertable estimated maximal memory size in bytes (not provided, if user lacks authorization)
rowsintegertable row count (not provided, if user lacks authorization)

MonitoringOverview

Properties

NameTypeDescription
resultArray.<object>
result.namestringNDSO name
result.lastOpstringtype of the last operation
result.lastOpBystringuser last changing the last operation
result.lastOpAtstringISO 8601 UTC timestamp when the last operation was last changed
result.lastOpStatusstringstatus of the last operation
result.subscribersintegernumber of subscribers
result.statsobjecttable statistics
result.stats.activeDataMonitoringTableStatsstats for active data entity
result.stats.inboundQueuesArray.<MonitoringTableStats>stats for inbound queue entities
result.stats.changeLogMonitoringTableStatsoptional stats for change log entity
result.messagestringoptional warning message derived from authorization errors by HANA; thrown, if user lacks authorization for monitoring synonyms (e.g. M_CS_TABLES)

OperationInfo

Properties

NameTypeDescription
resultArray.<object>
result.operationIdintegeroperation ID
result.operationstringoperation type
result.statusstringoperation status
result.userNamestringuser last changing the operation
result.lastTimestampstringISO 8601 UTC timestamp when the operation was last changed
result.operationDetailsobjectoptional operation details

OperationsForRequest

Properties

NameTypeDescription
resultArray.<object>
result.operationIdintegeroperation ID
result.operationstringoperation type
result.statusstringoperation status
result.userNamestringuser last changing the operation
result.lastTimestampstringISO 8601 UTC timestamp when the operation was last changed
result.affectedRequestsArray.<integer>related request IDs

RequestInfo

Properties

NameTypeDescription
resultArray.<object>
result.operationIdintegerID of the last operation affecting the request
result.operationstringtype of the last operation affecting the request
result.statusstringstatus of the last operation affecting the request
result.userNamestringuser last changing the operation
result.startTimestampstringISO 8601 UTC timestamp when the operation was started
result.lastTimestampstringISO 8601 UTC timestamp when the operation was last changed
result.dependentRequestsArray.<integer>related request IDs
result.requestStatusstringcurrent status of the request (derived from the latest operation affecting it)
result.operationDetailsobjectoptional operation details

RowcountWithFilter

Properties

NameTypeDescription
resultArray.<object>
result.tableNamestringfully qualified name of active data table
result.rowCountintegertotal number of rows

Subscribers

Properties

NameTypeDescription
resultArray.<object>
result.subscriberNamestringsubscriber name
result.descriptionstringadditional description
result.userNamestringuser that created the subscriber
result.creationTimestampstringISO 8601 UTC timestamp of the subscriber creation
result.maxRequestintegerlast activation request the subscriber extracted from the change log
result.pushNotificationstringnot implemented

OperationResult

Properties

NameTypeDescription
operationIdintegerID of the operation

LoadResult

Properties

NameTypeDescription
operationIdintegerID of the load operation
loadIdintegerID of the resulting load request

QueryOptions

Some tasks offer a parameter queryOptions that allow for backend-side paging, sorting and filtering. The task expects it to be an object like this:

Example

{
  lim: 100,             // LIMIT in SQL: returns up to 100 rows
  off: 200,             // OFFSET in SQL: skips first 200 rows
  flt: {                // builds WHERE in SQL; multiple columns are connected
    COLUMN1: 'value1',  // by AND
    COLUMN2: 123,
    COLUMN3: [          // array elements for same column are connected by OR
      {
        op: 'BT',       // BT resolves to 'BETWEEN ? AND ?'
        val: [10, 20]
      },
      {
        op: 'EQ',       // EQ resolves to 'IN (?,?,?)'
        val: [95, 99, 101]
      },
      {
        op: 'LT',      // LT ('less than') resolves to '< ?'
        val: 50        // there's also LE ('less or equal')
      },
      {
        op: 'GT',      // GT ('greater than') resolves to '> ?'
        val: 'abc'     // there's also GE ('greater or equal')
      }
    ]
  },
  fltMode: 'PARTIAL',   // instead of 'WHERE = ?' this resolves to 'WHERE LIKE ?'
                        // and wildcards around value (e.g. '%value1%')
                        // default is 'EXACT'
  ord: [                // builds ORDER BY in SQL
    {
      col: 'COLUMN1'    // defaults to 'ASC'
    },
    {
      col: 'COLUMN3',
      dir: 'DESC'
    }
  ]
}

RequestsForOperation

Properties

NameTypeDescription
resultArray.<object>
result.requestIdintegerrequest ID
result.userNamestringuser last affecting the request (by operation)
result.timestampstringISO 8601 UTC timestamp when the operation was last changed