Stryke Changelog
Version 1.9.0
Query criteria grouping and OR logical operator
Query filters can now contain either AND
or OR
operators. The logical operators also allow to define groups within the filtering criteria.
example
and: [
{ name : { eq : "test"}},
{ or : [
{ size: { eq: 100 }},
{ size: { eq: 200 }}
]}
]
Evaluates to:
(name = "test" AND ( size = 100 OR size = 200))
For more details see the "Logical Operators and Grouping" section under the Query docs.
Performance enhancements on queries that contain lookups
A number of performance enhancements have been implemented to improve the speed of queries that contain lookups in the GraphQL statement.
Version 1.8.0
Performance enhancements for batch record creation and imports
A number of performance enhancements have been implemented to improve the creation of multiple records (or import) within the same request. Especially when triggers are involved in the records' creation process.
Version 1.7.0
CSV and Text return types for Actions
Two action return types have been added: CSV and text. These allow to return a string document from actions that will be handled as either a CSV document or text document when opened from the app's UI. For more details see the "Return Types" section under the Action docs.
Version 1.6.0
Syncing definitions between app instances
This release adds the ability to sync app definitions or "app templates" between distinct app instances. This allows synchronising fields, entities, and code across app instances that are related. For example, development and production instances of the same application. Syncing is currently only available through the Stryke API and can be performed by calling the /sync
endpoint on any app. The sync endpoint works in one of two ways:
- Syncs the definition of a parent app with the selected child app instance
- Updating the definition of an app from an app template JSON document provided in the body to the sync request
When syncing the definition of a parent app with its child, no body is necessary in the /sync
request. However the parent app needs to have been previously assigned to the child application via the app instance update endpoint.
Please note that while syncing app definitions does not sync data directly, changing entity definitions can result in changes in the data stored in your app. For more details see the "Synchronising app instances" section.
Version 1.5.0
GraphQL and Stryke Query enhancements - "Any operator"
Two new operators ("Any" and "Not Any") have been added to the filter section of GraphQL queries to support querying for items in a list. "Any" (any
) and "Not Any" (nany
) can be used on regular fields as well as on lookup fields.
Example:
{
Receipt(
filter: { business : { alias: { any : ["shop","store","online retailer"] } } }
) {
id
alias
amount
}
}
For full details see the "Supported Operators" under the query section of the documentation.
Version 1.4.0
Bulk record create operation and bulk triggers
Trigger actions have been enhanced to handle multiple records at once (bulk operations). Currently only record creation supports bulkified triggers. When multiple records are created in a single REST request or in a dataset import, the create trigger script will receive all the records under the variable:
stryke.data.new
See the Triggers section for more details.
GraphQL queries enhancements
A new GraphQL query has been added to allow searching for multiple IDs at once.
Example:
{
Receipt(ids: ["c07a84dc-312c-4c5b-beaa-1677e500cb16", "3c0f8f84-8892-4ed4-86b9-560eacbb75dc"]) {
id
alias
amount
}
}
For more details see: Query by IDs
User creation improvement
When the default user of a new application is created its password is defaulted to the same password of the Stryke user that created the application. This should speed up initial access to the application since password reset is no longer required. Resetting the password of the app's default user is still highly recommended.
Version 1.3.0
- When access control is none GraphQL schema does not include entity
- Access control fixes for GQL queries
If an entity is not visible to a user, it will not be present under the queries provided by GraphQL. However lookups to that entity in other entities will be visible to allow queries to work properly. In the case of lookups to non visible entities only the ID and Alias of the record will be visible under the queries no more data will be accessible.
- Lookup validation improvements
- Hydro Plot Enhancements
Version 1.2.0
- Added the ability to default the database and file storage that will be used by app instances of a specific user
- App instance creation improvements
- Fixes to lookups in GraphQL queries
Version 1.1.0
- Improvements to the app creation and sign up processes
- Updates to the playground app
- Access control fixes for GQL queries
Version 1.0.0
- Internal infrastructure update to improve scaling and security
Version 0.24.0
- Add the ability to assign a specific app instance to a specific file storage provider
- Added support for Azure file storage
- Fixes and improvements to the app creation process
- Prevent deleting an entity record if other entities have lookups to it
Version 0.23.0
- Internal enhancements to support Hydro applications (www.hydrocloud.io)
- Allow uploading more than 1 file at once from the front end
- Front end fixes and improvements for date-time fields
Version 0.22.0
CSV Data import enhancements
CSV data import is now available from the default Stryke User Interface under the records list views.
When developing an app, you can control which entities support records import via the canImportRecords
field in the entity metadata. canImportRecords
can be edited via the API and via the Stryke user interface under the entity edit screen.
Governor limits have been introduced to control the number of records that can be imported in a single request. Currently, standard subscriptions can import up to 100 records in a single request, whether it is from JSON
or CSV
payloads.
Version 0.21.0
Lists pagination, filtering and sorting enhancements
Lists have been enhanced in the standard Stryke user interface to support server side pagination (this leverages Stryke's GraphQL API). This dramatically improves the performance of the client for apps that have many records.
Version 0.20.0
Version 0.20.0 brings a lot of powerful enhancements and fixes but contains a breaking change that may require you to update some of your GraphQL queries (in API calls or scripts). If you are using queries with lookup fields in the filter criteria please have a look below at how you should update your code.
- Stryke query enhancements
- query by fields of related record (
id
,alias
) LIKE
andNOT LIKE
operatorsOFFSET
parameter
- query by fields of related record (
- Import data from CSV files
- App logs API
Stryke query enhancements - Breaking change
Stryke v0.20.0 brings quite a few important enhancements to the GraphQL queries that can be performed via the API or through scripts.
Filter by fields in a related record - Braking change
Until v0.20.0 queries could filter by lookup filed only using the ID of the related record.
The example below performs a query to retrieve all receipts related to a given business as supported by Stryke up to version 0.19.0.
// Stryke v0.19.0 and previous
{
Receipt(
filter: { business : { eq: "cca1f06a-985b-4f41-a27d-3df64aac1f50" } }
) {
id
alias
amount
}
}
Starting with v0.20.0 the above query needs to be changed to:
// Stryke v0.20.0 and above
{
Receipt(
filter: { business : { id: { eq : "cca1f06a-985b-4f41-a27d-3df64aac1f50" } } }
) {
id
alias
amount
}
}
This syntax change allows to extend the query to have a criteria that refers to fields other than the ID field. For example:
// Stryke v0.20.0 and above
{
Receipt(
filter: { business : { alias: { like : "%shop%" } } }
) {
id
alias
amount
}
}
The query above retrieves all receipts whose related businesses contain the word "shop" in their alias.
Currently only the id
and alias
fields can be used in filter criteria. For more details on query filters and how to apply this new approach see the query docs.
LIKE
and NOT LIKE
operators
The LIKE
operator allows to search for partial string values using '%' wildcards.
See docs for details.
OFFSET
parameter
The OFFSET
parameter allows to offset the result of a query by 'x' number of records. This is especially useful for paginating records together with the limit parameter.
OFFSET
and LIMIT
parameters are available in both the Query by filter as well as the Query all queries.
CSV Data import
Starting from Stryke v0.20.0 data can be imported from CSV files using the /data/importdataset
endpoint.
Data can be imported for a specific entity at a time. This means that a single CSV file being imported can only contain records for a specific entity. The entity for which records are being imported is specified as a request parameter in the request itself.
The CSV file needs to have as headers the fields of the entity being imported. If more fields are included in the CSV they will be ignored. Stryke will only import data for the fields it recognises for the entity being imported.
If a record being imported has a lookup to another record the CSV data needs to include the valid ID of the lookup record.
Example
Importing records of entity "receipt"
amount,receiptDate,type,business
12.5,2020-02-29T11:34:38.000Z,be4c9be7-74c9-4026-a241-51439bf199b4,
2.5,2020-02-29T12:00:03.000Z,,d0be016f-1ad3-43ad-a387-6aa1e74f682b
10,2020-02-28T11:12:38.000Z,ddef0c02-8587-437a-a2dd-0faf669db305,d0be016f-1ad3-43ad-a387-6aa1e74f682b
52,2020-02-28T19:50:38.000Z,ddef0c02-8587-437a-a2dd-0faf669db305,eb0a4a77-d416-44eb-9399-2ad91d842ac1
5,2020-02-28T18:50:38.000Z,,df9b54cc-639d-42e8-a7e2-04a073f3ab23
7.25,2020-02-27T12:54:38.000Z,,df9b54cc-639d-42e8-a7e2-04a073f3ab23
2.5,2020-02-26T15:25:38.000Z,,df9b54cc-639d-42e8-a7e2-04a073f3ab23
45,2020-01-29T14:25:38.000Z,,df9b54cc-639d-42e8-a7e2-04a073f3ab23
125,2020-01-26T22:59:38.000Z,f4184d59-44c5-4618-b3b6-c759132a35fa,6450cd2f-19a2-4b1d-8bf1-5072851e9a62
1.75,2020-01-13T13:03:38.000Z,f4184d59-44c5-4618-b3b6-c759132a35fa,6450cd2f-19a2-4b1d-8bf1-5072851e9a62
Currently, create triggers will not run when importing records via the /data/import
or /data/importdataset
endpoints.
App logs API
Stryke v0.20.0 provides a new API to retrieve logs from your app instance. These logs allow you to review and debug activity of your app. The logs API is only accessible by Stryke users and it will return logs for each operation performed against one of your apps (CRUD, script execution, etc).
The app logs API can be accessed via: