Release Notes
#
What's new in GraphbackThis file contains changes and migration steps for the Graphback project. Please follow individual releases for more information.
#
0.16.2#
Bug Fixes- Primary key with
ID
ScalarType and field name different toid
isn't auto-incrementable. Fixed in #1997 - Logical OR operator is not working correctly in MongoDB query builder. (#1963), fixed by (059a0ae)
#
0.16.1#
Bug Fixes- Correct main file and types paths of
graphql-serve
package (d4d918e).
#
0.16.0#
New FeaturesUse any
knex
0.20.x or 0.21.x version in your application (d826b6f#1903)Ability to specify composite unique columns in GraphQL Migrations (#1658), fixed by (9c6f34a231e2645c34533d58ea4427ff8f8f634e)
Requiring
_id: GraphbackObjectID
primary key for MongoDB (#1769). This fixes issues below related to primary key in MongoDB:- #1731, #1626 Ineffecient and wrong mapping of the
id
field - #1625 Filters on "id: ID" field not working
NOTE: If you are migrating from 0.15 or previous versions of Graphback, you may be required to update relationship fields so that their values (previous stored as
String
) are of typeObjectID
.- #1731, #1626 Ineffecient and wrong mapping of the
Add a
@transient
field annotation to ignore fields during input type creation and migrations 4076fa26
#
DataSyncUsing a
_lastUpdatedAt
field with a properGraphbackTimestamp
scalar and other minor fixes (#1771) including:- disabling conflicts in default configuration
- adding a
limit
argument tosync
Queries
#
Bug FixesFailure to map enum values in field directives (#1767), fixed by (a9ca21e1405dba14dab249af2f8d146ac2306803)
invalid input syntax for type timestamp: "null" (#1837), fixed by (37cdc1d12410a1fafb27877b97b54ea308acecb1)
Do not remove directives on Object Types in generated schema (#1767), fixed by (22c7a1da62e2752a21db4e4552e970aa93ba37ae)
Do not silently overrides createdAt/updatedAt custom fields when model contains @versioned annotation #1597
#
Breaking Changes#
Disable filter input generation for unknown custom scalarsGraphback disabled generation of unknown custom scalars, except for Timestamp
, Time
, Date
, DateTime
, as we cannot reliably support scalars we do not know.
See Graphback Scalars for the list of officially supported scalars.
- Replace
@db(skip: true)
field annotation with@transient
85d50f3c
findBy
method signature. This also applies to all services that implement this interface.#
Changed GraphbackCRUDService args
findBy
now accepts a new interface, FindByArgs
, which wraps the filter
, page
and orderBy
optional arguments.
context (optional)
The context parameter is now optional.
info
You can now optionally pass the GraphQLResolveInfo
info object to the CRUD service, to perform extra optimizations like retrieving only the selected fields from the query.
path (optional)
The root path of the query to get the selected fields from. For example, to get id
, title
, description
fields from the following query, you would set the path to items
.
The path variable is optional, as it will automatically resolve to the root field of the entire query.
context
parameter removed from subscribeToCreate
, subscribeToDelete
, subscribeToUpdate
methods in GraphbackCRUDService.#
This method was unused.
context
parameter from all GraphbackDataProvider methods. This also applies to all providers that implement this interface.#
Removed All CRUD methods in GraphbackDataProvider
had a context
parameter used to get the selected fields.
These have been replaced with (optional) selectedFields
- you can pass a string array of the fields you want to select from the database.
findBy
method signature. This also applies to all providers that implement this interface.#
Changed GraphbackDataProvider args
findBy
now accepts a new interface, FindByArgs
, which wraps the filter
, page
and orderBy
optional arguments.
#
Remove resolver options from GraphbackContextResolver options (context.graphback.options
) was removed from the context because the count
aggregation and selectedFields
extraction logic was moved to the CRUDService method.
#
Removed graphback key from GraphbackContextThe graphback.services
property has been removed from GraphbackContext
, and graphback
is now the service map property.
Now you can reach the Graphback service map by calling context.graphback.Note.findBy(...)
.
ModelDefinition
as the first constructor parameter.#
CRUDService, DataSyncCRUDService now accepts a To instantiate a CRUDService you must pass the full ModelDefinition
instead of the model name.
ModelDefinition
as the first constructor parameter.#
KeycloakCrudService now accepts a To instantiate a CRUDService you must pass the full ModelDefinition
instead of the model name.
sync
method signature has been changed#
DataSyncProvider The context
argument has been replaced with (optional) selectedFields
.
context
parameter is removed from the create
method in MongoDBDataProvider
and DatasyncMongoDBDataProvider
providers.#
This parameter did not do anything.
#
0.15.1#
Bug Fixes#
0.15.0#
New Features#
Bug Fixescreate-graphback
was not correctly creating a fullstack application (#1778) (685aa4c)- throw an error if relationship annotation are missing (#1766). This fixes #1604 where when no relationship annotation is defined, invalid input fields are added to input type.
#
0.14.1#
Bug Fixes#
0.14.0#
Migrating to 0.14.0#
Breaking ChangesGraphback 0.14 contains a lot of breaking changes that will improve and simplify your application code.
#
CRUD Mutation return types are nullablePreviously, the CRUD mutation resolvers did not allow returning null. These can now be null.
#
Changed annotation syntaxAll annotations now use a uniform syntax format: @annotation(foo 'bar')
that is similar to GraphQL Directives
Examples:
becomes:
becomes:
@crud
annotation#
Removed The @crud
model annotation has been removed. To specify CRUD configuration on your model use the @model
annotation.
becomes:
#
@graphback/runtime package is removedRuntime package should no longer be used in top level API. All functionalities were moved to the @graphback/core package.
NOTE: Users should never have runtime or core packages imported in their applications and interact with graphback package as aggregator
#
API code generation is no longer supportedIn 0.14.0 Graphback now supports runtime generation of your schema, resolvers and services.
Please manually remove your generated schema and resolver files.
Remove @graphback/codegen-resolvers
from your package.json
.
To use our runtime API, refer to the Runtime API documentation.
#
New runtime APIWe have removed the complicated multi-step runtime API so that you can create your Graphback API in a couple of lines.
If you were already using the runtime API, replace this:
With this:
For more advanced usage, refer to the Runtime API documentation.
#
Client code generation now generates all GraphQL documents into one file- Replace
outputPath
withoutputFile
in your client config - Delete previously generated client documents and rerun generate command
- Be sure to correct your documents path in your codegen config if you use GraphQL-Code-Generator
@db.primary
is removed, use @id
instead#
We have replaced the @db.primary
annotation with @id
.
@db.default
is removed, use @default
instead#
We have replaced the @db.default
annotation with @default
.
Now you can provide default values like this:
instead of
graphback db
CLI command to migrate database#
Removed We have removed the graphback db
command. Database migrations can be only executed from the codebase when application is started.
See Database Migrations on how to use the code-based migrations in your API.
graphback init
CLI command#
Removed We have removed the graphback init
command, this has been replaced by a newly added micro-cli create-graphback
.
#
Removed helper method to create CRUD servicesPreviously you would have done this to create your context and a CRUD service for every model:
Now you can create your services and data providers with like this:
For more advanced usage, refer to the Runtime API documentation.
graphback openapi
CLI command.#
Removed We have removed the graphback openapi
CLI command, but you can still use OpenAPI-to-GraphQL to create a GraphQL schema from your OpenAPI specification.
graphl-config
is not supported in graphql-serve
#
To use graphql-serve
now you must use a model file:
#
SchemaCRUDPlugin only has a single configuration optionWe have removed the fileName
and format
options from SchemaCRUDPlugin
. These can be inferred from the outputPath
:
format
option from ClientCRUDPlugin#
Remove The format option has been removed as you can specify the file extension in outputFile
.
#
DeprecatedPgKnexDBDataProvider
has been deprecated in favour ofKnexDBDataProvider
.
#
New Features- All client documents are now generated in a single file. The file's path is specified by the
outputFile
field in client config outputPath
in client config has been removed- Added new templates to graphback init commands. All templates now giving ability to add client side application.
- Added a new, simpler runtime API
- GraphbackPluginEngine accepts now object instead of arguments.
new GraphbackPluginEngine({schema})
- Provide full path to schema in the
SchemaCRUDPlugin
config optionoutputPath
- Support relationships with non-model GraphQL types.
- Create a new Graphback project using
create-graphback
#
0.13.0Invalid release
#
0.12.0#
New Features- Add fragment only mode (c1297e21)
- cli: add mongodb template option (ce304da8)
- add mongo-runtime template (6b313bf8)
#
Bug Fixes- Print schema with directives (#1147) (2c72ddb0)
- Mongo batching for types (7ea4b6d4)
- Mongo batching with string as key (#1130) (e49d03a8)
- Add additional assign for the crud modifiers (660d2a53)
- Problem with CRUD config being global (fc138d27)
- check for undefined ID value (34021a20)
- throw error when no ID is supplied (1256f71d)
- accept globs and array of globs for model option in config (#1067) (2756b29a)
- Fix Pagination in Knex Provider (df469dc8)
- Fix pagination in MongoDB provider (7a8618e0)
- Add pagination to findBy queries (f0b8e1d5)
- Update LayeredRuntimeResolverCreator to use pagination in findall (b1a22846)
- Update CRUD services to use pagination in findall (33527825)
- resolvers: export generated code (eea38a5d)
#
0.11.4#
Bug Fixes- don't generate blank model file (ca29103e)
- remove generation of dbmigrations config in
graphback config
(f0b8ed4)
#
0.11.1- Fixed issue where root query type needed to properly created final schema.
- Remove serve from graphback-cli
#
0.11.0New features:
graphql-serve
- a fully functional GraphQL server based on Graphback and Apollo Server.- MongoDB support.
- Pagination support.
Other new features and changes documented in blog post: https://medium.com/@wtr/graphback-plugin-based-realtime-database-generator-78f4f608b81e
Breaking changes:
BREAKING:
@oneToMany
and@oneToOne
annotations are required to map relationships.BREAKING: Configuration format changed from
graphback.json
tographqlrc.yml
BREAKING: CRUDService api was changed to support per entity model
BREAKING: CRUDService api was changed to support per entity model
BREAKING: Runtime API was changed. Graphback package exports now GraphbackRuntime class to create runtime layer.
BREAKING: @model annotation is required for type to use generation
BREAKING: Removed GraphbackBackend and related interfaces.
BREAKING: Removed Production migrations engine
BREAKING: Removed directives for CRUD operations Graphback no longer uses GraphQL directives for controling generation of the CRUD operations. Users should use annotations
now becomes:
#
0.10.2#
graphql-migrationsIt's now possible to create database relationships from the 1:M
side of your data model!
@graphback/codegen-client @graphback/codegen-resolvers @graphback/codegen-schema @graphback/core @graphback/runtime graphql-migrations
#
Graphback-CLI#
Featuresgraphback openapi
command provides a way to migrate OpenAPI definition to GraphQL schema
#
Graphback#
Features- Support for Interfaces in GraphQL schema GraphQL Schema now supports interfaces that can be used to ensure consistency of the data. Example:
NOTE: Interfaces will not be taken into consideration when generating resolvers and database
#
0.8.3 (29th August, 2019)#
Templates#
Fixes- Removed redis-subscriptions and use im-memory graphql-subscriptions instead.
#
Graphback-cli#
Fixes- Removed redis dependency from docker-compose.
#
0.8.2 (28th August, 2019)#
Graphback-cli#
Fixes- Fixed instructions for missing watch command and replaced it with develop
- Fixed issue with not cleaning template and dist folders
- Disabled the GraphQL-JS template due to invalid resolver format.
#
0.8.1 (28th August, 2019)#
Graphback#
Fixes- Fixed npm release missing template files
#
0.8.0 (28th August, 2019)#
Graphback#
Features- Added ability to generate client side queries according to data model.
#
Graphback-cli#
Fixes- Removed dependency from docker when using sqlite3, changed redis subscriptions to inmemory subscriptions.
#
Templates#
Fixes- Changed scripts of templates.
#
0.7.2 (20th August, 2019)#
Graphback-cli#
Fixes- Removed watch command from cli which caused a lot of bugs.
#
0.7.1 (20th August, 2019)#
Graphback#
Fixes- Fixed problem with creating tables for Int type
#
0.7.0 (12th August, 2019)#
Graphback#
Features- Added new
@disableGen
directive that allows user to disable CRUD operation for single type
#
Templates#
Features- Added new GraphQL-js starter template, that uses GraphQL.js library.
- Added ability to use custom templates
#
0.6.0 (7th August, 2019)#
Graphback-cli#
Features- Added support for SQLite database inside CLI
- Added new Tasks model template
#
Fixes- Configuration in template works now with different databases that are supported by knex library
#
0.5.0 (1st August, 2019)#
Graphback#
Features- Added ability to perform CRUD generation based on configuration flags The generation will now be based on config.json file that will contain properties for all resolver types that need to generate. Please refer to the documentation for more information
- Added ability for custom Queries/Mutations/Subscriptions. Users can generate empty resolver stubs for their implementation.
#
Fixes- Modularized resolver output into separate files(based on types) instead of a single one. Also added custom resolvers.
#
Graphback-cli#
Fixes- Changed resolvers output format from a single resolver file to multiple files. Also added custom resolvers in generate
#
Templates#
Fixes- Dropped generated folder and change structure for template accordingly. Generated content will be now inside
src
folder instead.
#
0.4.0 (25 July, 2019)#
Templates#
FeaturesAdded Sofa (https://github.com/Urigo/SOFA/) template that allows generating restful API along with GraphQL one.
#
0.3.2 (24 July, 2019)#
Graphback#
Features- Added relationship support to schema and resolvers.
#
0.3.1 (17 July, 2019)#
Graphback#
Fixes- Strict typing in resolvers.
#
Templates#
Fixes- Added ts config and check compilation.
#
0.3.0 (16 July, 2019)#
Graphback#
Fixes- Revamp core to use visitor pattern
- Generate schema with opinionated schema patterns
- Edited resolvers implementations(working)
#
Deprecations- removed dependency of
graphql-codegen
version0.18.2
#
Graphback-cli#
Features- added
db
andwatch
command
#
Fixes- added more options in
init
command, to inject config
#
0.2.0 (12 June, 2019)#
Graphback#
Features- Initial
schema
andresolvers
generation
#
Graphback-cli#
Features- added
init
andgenerate
command