Skip to content

basebox Changes

All notable changes to basebox will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Warning all releases marked as beta are NOT INTENDED FOR PRODUCTION USE.

1.0.3 - 2023-12-15

Added

  • Added support to have a microservice as an orchestrator step
  • Added atomic flag to Orchestrator

1.0.2 - 2023-12-06

Added

  • Added _passthrough_headers parameter to microservice operation to allow specific HTTP headers to be passed through

Fixed

  • Incorrect default config file generated by/for dbproxy (-d argument)

1.0.1 - 2023-11-30

Added

  • Allow UPDATE_NESTED to have an insert at the top level of the nested resolver

Fixed

  • The WHERE clause in some commands was left out. Fixed.

1.0.0 - 2023-11-17

Added

  • Docker based installation
  • Atomic transactions
  • Microservices support
  • GraphQL complexity checks
  • Operation level security
  • Support for local public key files for access token validation

Fixed

  • Improved misleading/unclear error messages

1.0.0-rc1 - 2023-11-02 [Unreleased]

Added

  • First release candidate for verion 1.0.0

0.1.0-beta.23 - 2023-10-02 [Unreleased]

Added

  • Allow orchestrator arguments to be nullable

0.1.0-beta.22 - 2023-09-27 [Unreleased]

Fixed

  • Issued with hardcoded values in ORCHESTRATORs fixed
  • Fix for Nested Updates returning incorrect data. Currently only supports returning one level of data.

0.1.0-beta.21 - 2023-09-08 [Unreleased]

Added

Updated base libraries (secuirty updates)

Fixed

  • Added more validation and functionality into nullable operation arguments
  • Returning a null value for Void transactions

0.1.0-beta.20 - 2023-09-06

0.1.0-beta.20 - 2023-09-06 [Unreleased]

Fixed

Added check to current user id compiler directive to see if the directive is actually required. This gave an error if the user did not exist already and would cause an issue on user creation.

0.1.0-beta.19 - 2023-09-05 [Unreleased]

Added

  • Added the '@currentUserId' compiler directive. This directive is used in a schema to specify the current user of a request without having to pass the value in. This does a mapping between the external IdP identifier (currently the subject in an access token) and the internal user id.

Fixed

  • Fixed issue with null arguments in object lists
  • Removed "OK" being returned for Void operations

0.1.0-beta.18 - 2023-08-31 [Unreleased]

Added

  • Added operation level security - all operations will not be processed unless permissions have been granted in the IdP / via the access token.

Fixed

  • Fixed issue with orchestrators not processing variables correctly

0.1.0-beta.17 - 2023-08-28 [Unreleased]

Fixed

  • Fixed issue with floating point numbers not being able to accept integer values
  • Fixed issue with nested updates not updating their base objects/tables

0.1.0-beta.16 - 2023-08-25 [Unreleased]

Added

  • Added nested updates to the compiler.

0.1.0-beta.15 - 2023-08-23 [Unreleased]

Added

  • Added max_request_size (under [server]) in both the broker and dbproxy configuration files. This sets the maximum payload size allowed per request (i.e. the size of a request cannot be greater than this figure). The max_request_size is in bytes and defaults to 256Kb if not present.

Fixed

  • Fixed: An orchestrator operation gave an error if any of the underlying step operations returned a void type.
  • Fixed: Void Nested Inserts gave an error for operations that returned a Void type.

0.1.0-beta.14 - 2023-08-22 [Unreleased]

Added

  • Ownership model for security. Now a user can own their own data. This prevents a user from seeing anyone else's data.
  • Added the ability to delete a user from Auth0 using the Auth0 API.
  • Added nullable arguments. Now, if an argument is left our of a request, it is checked to see if it is allowed to be nullable. If it is a nullable argument, the argument is removed from the call to the database. This correctly only works for Mutations.

Fixed

  • Increased request payload limit. Previously a limit of 256Kb was set, this has been increased to 32Mb to cater for large strings.

0.1.0-beta.13 - 2023-08-12 [Unreleased]

Added

  • Added ORCHESTRATOR to dbproxy. Can now handle ORCHESTRATOR requests.
  • Added INSERTED_NESTED to dbproxy. Can now handle INSERTED_NESTED request.
  • Added additional validation

Fixed

  • Fix for nested insert / array handling.
  • Fixed bug with ManyToOne joins that were taken as OneToMany joins
  • Fixed issue with saving Base64 fields to database, previously gave a conversion error
  • Fixed potential dead lock in broker on access token expiration

0.1.0-beta.12 - 2023-07-21 [Unreleased]

Added

  • Enum: Allow for enum values to be passed as literal values (i.e. without double quotes) and string values (with double quotes) in GraphQL requests. While GraphQL enum values do not have double quotes according to the specification, this is not possible when using JSON variables as JSON does not support enums or literal values. Furthermore, languages like Javascript do not have enum types and send through enum values as strings.
  • Variables: Support for GraphQL variables (in JSON format) has been added.
  • Additional trace logging has been added

0.1.0-beta.11 - 2023-07-19

  • broker: Updated http server actix-web to 4.3.1
  • dbproxy: Updated http server actix-web to 4.3.1

0.1.0-beta.10 2023-07-04

Added

  • dbproxy: Added new ORCHESTRATOR resolver that gives users the ability to combine GraphQL operations into a new, atomic operation.
  • Compiler: Added Orchestrator settings to resolver file.

Changed

  • Compiler: Improved argument validation

0.1.0-beta.9 2023-06-27 [Unreleased]

Changed

  • Nested Inserts: Specifiers: Added specifiers to the '_fields' section of nested inserts. These specifiers ('_select' and '_insert') tell the compiler where an object in the section is included as a reference ('_select') or as a nested insert ('_insert'). A reference is useful if a related object already exists and a user would like to reference this object (e.g. in the case of a parent-child relationship, when you insert a child, you need to reference the parent in order to specify who the child belongs to). In the case of a nested insert ('_insert'), this means the object is there to be inserted.
  • Nested Inserts: now allows for multiple arguments. This was limited to one argumetn previously.
  • Nested Inserts: Removed the '_object' within the '_fields'. This was used previously as a placeholder for '_object' field value in the resolver. This is no longer required and the value is assumed implicitly.
  • Improved error messages

Fixed

  • Lists: arguments of type List (i.e. arrays) are now better handled as it previously had several issues with where and when they could be used.

0.1.0-beta.8 2023-06-19 [Unreleased]

Changed

  • Filters: When one object has a field that is an object (a field object or related object), the fields of the related object can now be used in a filter - this is currently limited to primary keys only.
  • GraphQL Input Objects: Added support as arguments to operations

Fixed

  • Removed Void from being generated in Data Model. Previously created a void domain of type Unknown

0.1.0-beta.7 2023-06-05 [Unreleased]

Fixed

  • dbproxy: Re-enabled PostgreSQL peer authentication setting in config file

Changed

  • dbproxy, broker: print expected and actual values in error log if token validation fails

0.1.0-beta.6 2023-05-24

Changed

  • dbproxy: backwards-incompatible change for the config file syntax. The former config sections [idp_config] and [openid_token_validation] are now merged together in a new section named [oidc_config]
  • Changed user information returned after successful login; now, broker returns all information returned from the OpenID Connect provider. More info can be found here.

Added

  • broker: Support for two different authentication modes; access token mode and client mode. See our docs for more info.
  • broker: Support multiple OAuth2 redirect URLs (see here)
  • dbproxy, compiler: Additional validation
  • compiler: Extended nested insert functionality

Fixed

  • GraphQL compiler: Type map generation
  • GraphQL compiler: Query aggregation

0.1.0-beta.4 - 2023-05-09

Added

  • Support for a new custom scalar type ("Base64") for storage of long strings in base64 format
  • Nested Inserts which allows for multiple inserts into parent/child table relationships

Fixed

  • Fixed issues with adding dates and timestamps to the database
  • Fixed incorrect aggregation of certain json fields
  • Fixed issue with certain select queries giving an error when aggregating results
  • Fixed type map not saving the correct types in specific cases

0.1.0-beta.3 - 2023-05-05

  • Fixed runtime panic in broker if process exits early due to configuration error
  • Corrected broker config file template
  • Fixed log messages from basebox libraries not being logged

0.1.0-beta.2

  • Added support for Auth0 as authentication provider. See our Auth0 Guide.
  • Fixed libssl-1.1 dependency in Linux builds. All Linux builds now link to libssl-3; if you need a version for libssl-1.1, please let us know.
  • Added BLL (business logic layer in Python)
  • Added Void for mutations that do not return any results
  • Changed return type of top-level operation
  • Changed @bb_resolver _type field values from lower case to upper case in line with GraphQL enumerated type case convention
  • When a json response to an operation was previously returned, the key for the operation was the operations return value type instead of the operation's name. Fixed.
  • Fixed bug with UUID parameters being submitted to the database as a String
  • Added support for argument arrays i.e. sets of arguments for a given field - currently only supports UUID
  • Improved default config comments for broker and dbproxy
  • Remove trailing slash from broker's idp_url config option
  • Fixed libssl-1.1 dependency in Linux builds. All Linux builds now link to libssl-3; if you need a version for libssl-1.1, please let us know.
  • Added Business Logic Layer which allows for business logic to be written in Python
  • Added Void type to GraphQL. Type is used in mutations that do not return any values.

0.1.0-beta.1

This is the first public BETA of basebox - it is NOT READY FOR PRODUCTION.

Please send your ideas, questions, wishes, bug reports to support@basebox.io - thank you!