Releases: neo4j/graphql
@neo4j/introspector@5.0.0-alpha.0
Major Changes
- #5789
1a07d40
Thanks @darrellwarde! - The Neo4j GraphQL Library and Introspector now required Node.js 22 or greater.
Patch Changes
- #5837
721691a
Thanks @MacondoExpress! - Changed how "@neo4j/introspector" generates list fields that now are generated as a list of non-nullable elements, as a list of nullable elements is not supported by Neo4j.
@neo4j/graphql@7.0.0-alpha.0
Major Changes
-
#5899
7335d8f
Thanks @darrellwarde! - Nested mutation operations now follow the relationship direction behaviour as defined inqueryDirection
-
#5872
925ad8d
Thanks @angrykoala! - Remove@private
directive. This directive was intended to be used with the library@neo4j/graphql-ogm
which is no longer supported. -
#5895
6afcadd
Thanks @angrykoala! - Fails schema generation if there are conflicting plural names in types. For example, the following schema will fail, due to ambiguousTechs
pluraltype Tech @node(plural: "Techs") { name: String } type Techs { value: String }
-
#5755
9c75f92
Thanks @angrykoala! - Remove support forconnectOrCreate
operations -
#5778
56022ba
Thanks @darrellwarde! - The deprecateddirected
argument has been removed, andqueryDirection
now only accepts two possible values -DIRECTED
(default) andUNDIRECTED
.Additionally, the
directedArgument
setting ofexcludeDeprecatedFields
has been removed as these deprecated fields have been removed. -
#5819
ac1fa62
Thanks @angrykoala! - Single element relationships have been removed in favor of list relationships:Before
type Movie { director: Person @relationship(type: "DIRECTED", direction: "IN") }
After
type Movie { director: [Person!]! @relationship(type: "DIRECTED", direction: "IN") }
This requires updating filters, clients and auth rules to use the list filter operations.
Single element relationships cannot be reliably enforced, leading to a data inconsistent with the schema. If the GraphQL model requires 1-1 relationships (such as in federations) these can now be achieved with the
@cypher
directive instead:type Movie { director: Person @cypher( statement: """ MATCH(this)-[:ACTED_IN]->(p:Person) RETURN p """ columnName: "p" ) }
-
#5762
87e416b
Thanks @darrellwarde! - There have been major changes to the way that full-text search operates.The directive now requires the specification of an index name, query name, and indexed fields.
input FulltextInput { indexName: String! queryName: String! fields: [String]! } """ Informs @neo4j/graphql that there should be a fulltext index in the database, allows users to search by the index in the generated schema. """ directive @fulltext(indexes: [FulltextInput]!) on OBJECT
Here is an example of how this might be used:
type Movie @node @fulltext(indexName: "movieTitleIndex", queryName: "moviesByTitle", fields: ["title"]) { title: String! }
Full-text search was previously available in two different locations.
The following form has now been completely removed:
# Removed { movies(fulltext: { movieTitleIndex: { phrase: "The Matrix" } }) { title } }
The following form as a root-level query has been changed:
# Old query query { moviesByTitle(phrase: "The Matrix") { score movies { title } } } # New query query { moviesByTitle(phrase: "The Matrix") { edges { score node { title } } } }
The new form is as a Relay connection, which allows for pagination using cursors and access to the
pageInfo
field. -
#5820
d8d59f8
Thanks @MacondoExpress! - Change the way how@node
behaves,@node
is now required, and GraphQL Object types without the directive@node
will no longer considered as a Neo4j Nodes representation.
Queries and Mutations will be generated only for types with the@node
directive. -
#5801
95ce8bb
Thanks @darrellwarde! - Implicit filtering fields have been removed, please use the explicit versions:# Old syntax { movies(where: { title: "The Matrix" }) { title } } # New syntax { movies(where: { title_EQ: "The Matrix" }) { title } }
The
implicitEqualFilters
option ofexcludeDeprecatedFields
has been removed. -
#5755
9c75f92
Thanks @angrykoala! - Remove support for@unique
directive -
#5768
e338590
Thanks @angrykoala! - Removeoverwrite
field in connect operations -
#5777
0ecfd71
Thanks @darrellwarde! - The deprecatedoptions
argument has been removed.Consider the following type definitions:
type Movie { title: String! }
The migration is as below:
# Old syntax { movies(options: { first: 10, offset: 10, sort: [{ title: ASC }] }) { title } } # New syntax { movies(first: 10, offset: 10, sort: [{ title: ASC }]) { title } }
The
deprecatedOptionsArgument
ofexcludeDeprecatedFields
has been removed as it is now a no-op. -
#5802
99cb9aa
Thanks @darrellwarde! - Implicit set operations have been removed. For example:# Old syntax mutation { updateMovies(where: { title_EQ: "Matrix" }, update: { title: "The Matrix" }) { movies { title } } } # New syntax mutation { updateMovies(where: { title_EQ: "Matrix" }, update: { title_SET: "The Matrix" }) { movies { title } } }
The
implicitSet
argument ofexcludeDeprecatedFields
has been removed. -
#5789
1a07d40
Thanks @darrellwarde! - The Neo4j GraphQL Library and Introspector now required Node.js 22 or greater.
Patch Changes
- #5837
721691a
Thanks @MacondoExpress! - Added a validation rule to avoid defining fields as lists of nullable elements, as Neo4j does not support this.
@neo4j/introspector@4.0.1
Patch Changes
- #5886
f234487
Thanks @angrykoala! - Remove limit on relationships introspection
@neo4j/introspector@3.0.2
Patch Changes
- #5891
8c307bd
Thanks @angrykoala! - Remove limit on relationships introspection
@neo4j/graphql@6.2.2
Patch Changes
-
#5888
3037bb9
Thanks @darrellwarde! - Fix discrepancy of relationship direction when filtering -
#5869
34725f6
Thanks @angrykoala! - Deprecates@private
directive. The private directive was aimed to be used in conjunction with the OGM, which is no longer supported. -
#5888
3037bb9
Thanks @darrellwarde! - Fix incorrect relationship direction when performing a delete operation nested under a delete operation
@neo4j/graphql@5.11.2
Patch Changes
- #5889
b125790
Thanks @darrellwarde! - Fix incorrect relationship direction when performing a delete operation nested under a delete operation
@neo4j/graphql-ogm@5.11.2
Patch Changes
- Updated dependencies [
b125790
]:- @neo4j/graphql@5.11.2
@neo4j/graphql@6.2.1
Patch Changes
-
#5861
f2e1575
Thanks @darrellwarde! - Fixed bug where fields decorated with@customResolver
were included in the projection of the generated Cypher query -
#5865
258ff53
Thanks @darrellwarde! -@default
directive fixed to work as expected on fields of temporal type, andBigInt
fields
@neo4j/graphql@5.11.1
Patch Changes
-
#5863
a313cc6
Thanks @darrellwarde! - Fixed bug where fields decorated with@customResolver
were included in the projection of the generated Cypher query -
#5866
67df449
Thanks @darrellwarde! -@default
directive fixed to work as expected on fields of temporal type, andBigInt
fields
@neo4j/graphql-ogm@5.11.1
Patch Changes
- Updated dependencies [
a313cc6
,67df449
]:- @neo4j/graphql@5.11.1