v2.1.2 (May 25, 2020)
Fixed
- Connections inside union fragments #407
v2.1.1 (Nov. 21, 2019)
Fixed
- Updated vulnerable version of lodash (
eed0264
)
v2.1.0 (Aug. 25, 2018)
- Numerous bug fixes
- TypeScript type definitions
- New 'mysql8' dialect which supports some pagination
v2.0.13 (Sep. 4, 2017)
- Don't write to debug module unless it's actually enabled.
v2.0.9 (Aug. 23, 2017)
- Properly format instances of Buffer.
v2.0.8 (Aug. 16, 2017)
- Support duplicate fields without aliases off the query root type.
v2.0.6 (Aug. 11, 2017)
- Add SQL AST node to sqlJoin callback signature.
v2.0.5 (Aug. 11, 2017)
- Remove the use of
Proxy
to improve compatibility.
v2.0.4 (Aug. 8, 2017)
- Add option for custom dialect modules.
- Various bug fixes.
v2.0.0 (Jun. 25, 2017)
New features:
- LIMIT
functionality, supported on all fields.
- Fetch columns from junction tables.
- For fields with junctions, you can now specify WHERE
and ORDER BY
clauses on the junction table or the main table, including paginated fields.
- Ability to dynamically choose pagination implementation per-request.
- Better ability to write where
functions that depend on args and info from the parent/ancestors.
Breaking changes:
- Fields with junctions have a new interface in order to support the new features.
- Any where
, orderBy
, and sortKey
on many-to-many paginated fields used to be applied to the junction table. This has changed, and will be applied to the main table instead in order to be consistent with non-paginated junctions. If the old behavior is desired, you can nest those properties inside the junction
object, which is part of the new API.
- Change 4th parameter of where
and sqlExpr
to the field's SQL AST Node, which is a lot more useful.
// this...
{
type: new GraphQLList(User),
junctionTable: 'relationships',
sqlJoins: [
(followers, relations) => `${followers}.id = ${relations}.follower_id`,
(relations, followees) => `${relations}.followee_id = ${followees}.id`
]
}
// is now this...
{
type: new GraphQLList(User),
junction: {
sqlTable: 'relationships',
sqlJoins: [
(followers, relations) => `${followers}.id = ${relations}.follower_id`,
(relations, followees) => `${relations}.followee_id = ${followees}.id`
]
}
}
// this...
{
type: new GraphQLList(User),
junctionTable: 'relationships',
junctionTableKey: [ 'follower_id', 'followee_id' ],
junctionBatch: {
thisKey: 'follower_id',
parentKey: 'id',
sqlJoin: (relations, followees) => `${relations}.followee_id = ${followees}.id`
}
}
// is now this...
{
type: new GraphQLList(User),
junction: {
sqlTable: 'relationships',
uniqueKey: [ 'follower_id', 'followee_id' ],
sqlBatch: {
thisKey: 'follower_id',
parentKey: 'id',
sqlJoin: (relations, followees) => `${relations}.followee_id = ${followees}.id`
}
}
}
// this...
{
type: UserConnection,
args: forwardConnectionArgs,
sqlPaginate: true,
orderBy: {
created_at: 'DESC',
followee_id: 'ASC'
},
junctionTable: 'relationships',
sqlJoins: [
(followers, relations) => `${followers}.id = ${relations}.follower_id`,
(relations, followees) => `${relations}.followee_id = ${followees}.id`
]
}
// is now this...
{
type: UserConnection,
args: forwardConnectionArgs,
sqlPaginate: true,
junction: {
sqlTable: 'relationships',
sqlJoins: [
(followers, relations) => `${followers}.id = ${relations}.follower_id`,
(relations, followees) => `${relations}.followee_id = ${followees}.id`
],
// the order now goes inside the `junction` if you want to sort on the junction table
orderBy: {
created_at: 'DESC',
followee_id: 'ASC'
}
}
// or you could apply the order on the user table by putting it out here
//orderBy: {
// created_at: 'DESC',
// id: 'ASC'
//}
// you could also place a `where` at either
}
v1.2.1 (Mar. 28, 2017)
- Add
jmIgnoreAll
andjmIgnoreTable
. - Make
sqlTable
a thunk. - Bug fix with recursively nested union and interface type fragments.
- Bug fix with for batch on a single-type parent.
v1.2.0 (Mar. 16, 2017)
- Add an API for GraphQLInterfaceType
v1.1.1 (Mar. 13, 2017)
- Add an API for GraphQLUnionType
v1.1.0 (Mar. 11, 2017)
- Add Oracle as supported dialect.
v1.0.1 (Mar. 8, 2017)
- Add
ORDER BY
support for non-paginated fields.
v1.0.0 (Feb. 28, 2017)
- Batching capabilities added.
- MariaDB can do pagination on batches.
sqlExpr
can now be asynchronous.- Remove unecessary "AS" from table alias in generated SQL.
Breaking changes:
getSQL
method removed. No longer makes sense in he new multiple-query paradigm.- Offset pagination adds the
total
to the connection object instead of thepageInfo
.
Deprecated:
joinTable
is deprecated. It was renamed tojunctionTable
to avoid over-use of the word "join".'standard'
dialect is deprecated because nothing really implements the standard. The new default is'sqlite3'
.
v0.9.10 (Feb. 16, 2017)
- Bug fixes with recursive fragments and argument parsing.
v0.9.9 (Feb. 3, 2017)
- Add
context
to thesqlJoin
parameters. - Support async in
sqlJoin
.
v0.9.8 (Feb. 2, 2017)
- Expose parent table aliases to
where
function.
v0.9.5 (Jan. 24, 2017)
- Fix bug for Postgres where
CONCAT
returns''
instead ofNULL
.
v0.9.4 (Jan. 22, 2017)
- Expose GraphQL args to
sqlJoin
function.
v0.9.3 (Jan. 14, 2017)
- Add support for fragments on interface types.
v0.9.2 (Jan. 5, 2017)
- Fix bug when composite keys contain timestamps or dates in PG dialect.
- Patch SQL injection risk.
v0.9.0 (Jan. 4, 2017)
- More automatic fetching using
getNode
implemented.
v0.8.0 (Dec. 19, 2016)
- Expose the
getSQL
method for getting only the converted SQL.
v0.7.0 (Dec. 16, 2016)
- Introducing raw SQL expressions for computed columns.
v0.6.0 (Dec. 2, 2016)
- Support asynchronicity in the
where
function.
v0.5.8 (Dec. 1, 2016)
- Add null check to node interface handler.
v0.5.7 (Nov. 29, 2016)
- Fix bug with
WHERE
conditions on paginated fields.
v0.5.6 (Nov. 14, 2016)
- Fix bug with query variables on the Node interface.
v0.5.5 (Nov. 13, 2016)
- Add support for dynamic sort keys on paginated fields. Sort keys can now be functions that receive the GraphQL arguments.
v0.5.4 (Nov. 10, 2016)
- Add support for query variables.
v0.5.2 (Nov. 6, 2016)
- Relay connection type names are no longer required to end with "Connection".
v0.5.1 (Nov. 5, 2016)
- Fix problem with introspection queries.
v0.5.0 (Nov. 4, 2016)
- Add dialect for MySQL/MariaDB.
v0.4.1 (Oct 21, 2016)
- Fix bug with de-duplication of objects.
v0.4.0 (Oct 20, 2016)
- Add Postgres dialect option.
- Support SQL pagination based on integer offsets.
- Support SQL pagination based on a sort key(s).
v0.3.7 (Oct 16, 2016)
- Fix bug with nested fragments.
v0.3.6 (Oct 13, 2016)
- Option to minify the raw data column names.
v0.3.5 (Oct 9, 2016)
- Add test coverage tools.
v0.3.4 (Oct 6, 2016)
- Add helper method for getting data for Relay's Node type.
- Fix bug with Union and Interface types.
v0.3.2 (Oct 5, 2016)
- Add support for specifying schema names for your SQL tables.
v0.3.1 (Oct 4, 2016)
- Detect Relay connection type and fetch data for it.
v0.3.0 (Oct 3, 2016)
- Unique keys required for every table. Necessary for achieving good performance during object shaping/nesting.
- Composite keys supported for the unique key.