Skip to content

Conversation

@NielsdeBoerDAE
Copy link
Collaborator

@NielsdeBoerDAE NielsdeBoerDAE commented Nov 18, 2025

This pull request features the following improvements:

  • ApiLogs table now properly logs the time taken
  • Sql filters are now supported for SQL backends
  • Implemented pagination (using ?offset=20&limit=20 for example). Keep in mind that because data dictionaries do not support offsets it still has to actually find the record. It just does not process it.
  • General speed optimalizations. Certain attributes are now only fetched once from the database instead of for every single record
  • Reuse json objects were possible for speed improvements
  • reverse proxy's now supported
  • Find index for cRestChildCollection is now a property
  • Errors are now logged to the event log
  • Fields that have a precision are now marked as number fields in the OpenApi specification instead of integer fields
  • GET requests now show that they return an array instead of an object. Better reflecting the actual response.

Closes #15

Previously certain attributes were fetched from the database for every single record. Now these properties are defined on object initialization and only the property is retrieved for each find. Should give a pretty good performance increase.
Applications that support sql filters can now use them to optimize constraints a little.
Allow developers to determine what index they want to use for finds on a child table.
It is now possible to pass query parameters twice. This allows you to apply two types of constraints to the same column
No longer create and destroy handles during a for loop. The handle will be created once and then be reused with InitializeJsonObject again. This should help improve performance
Implemented pagination for the cRestDataset. It is now possible to pass a offset in the query parameters. Since data dictionaries don't actually support an offset it still has to find the rows, it just skips over the first few depending on the offset.
// This determines how many records we return during a get all
Property Integer piLimitResults 0
// This determines how many records to skip during a GET request.
Property Integer piOffset 0
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be runtime specific and not in a design-time object-class.


// Grabs the old psSQLFilter and restores it
{ Visibility=Private }
Property String psOldSQLfilter ""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be runtime specific and not in a design-time object-class.

//If there is no psApiRoot we retrieve it from IIS
If (sApiRoot = "") Begin
Get ServerVariable of ghoWebServiceDispatcher "SERVER_NAME" to sServerName
Get ServerVariable of ghoWebServiceDispatcher "URL" to sApiRoot
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the future see if we can check a forwarded for server name and url as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants