Skip to content

Releases: neo4j/graphql

@neo4j/introspector@5.0.0-alpha.0

20 Dec 15:06
e1da36b
Compare
Choose a tag to compare
Pre-release

Major Changes

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

20 Dec 15:06
e1da36b
Compare
Choose a tag to compare
Pre-release

Major Changes

  • #5899 7335d8f Thanks @darrellwarde! - Nested mutation operations now follow the relationship direction behaviour as defined in queryDirection

  • #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 ambiguous Techs plural

    type Tech @node(plural: "Techs") {
        name: String
    }
    
    type Techs {
        value: String
    }
  • #5755 9c75f92 Thanks @angrykoala! - Remove support for connectOrCreate operations

  • #5778 56022ba Thanks @darrellwarde! - The deprecated directed argument has been removed, and queryDirection now only accepts two possible values - DIRECTED (default) and UNDIRECTED.

    Additionally, the directedArgument setting of excludeDeprecatedFields 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 of excludeDeprecatedFields has been removed.

  • #5755 9c75f92 Thanks @angrykoala! - Remove support for @unique directive

  • #5768 e338590 Thanks @angrykoala! - Remove overwrite field in connect operations

  • #5777 0ecfd71 Thanks @darrellwarde! - The deprecated options 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 of excludeDeprecatedFields 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 of excludeDeprecatedFields 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

16 Dec 14:26
03ac2b6
Compare
Choose a tag to compare

Patch Changes

@neo4j/introspector@3.0.2

16 Dec 14:25
48f170f
Compare
Choose a tag to compare

Patch Changes

@neo4j/graphql@6.2.2

16 Dec 14:26
03ac2b6
Compare
Choose a tag to compare

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

16 Dec 14:25
48f170f
Compare
Choose a tag to compare

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

16 Dec 14:25
48f170f
Compare
Choose a tag to compare

Patch Changes

@neo4j/graphql@6.2.1

04 Dec 09:32
bcafae7
Compare
Choose a tag to compare

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, and BigInt fields

@neo4j/graphql@5.11.1

04 Dec 09:32
d2d7756
Compare
Choose a tag to compare

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, and BigInt fields

@neo4j/graphql-ogm@5.11.1

04 Dec 09:32
d2d7756
Compare
Choose a tag to compare

Patch Changes