Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

changesets for branch 7.x #5714

Open
wants to merge 1 commit into
base: 7.x
Choose a base branch
from
Open

Conversation

neo4j-team-graphql
Copy link
Collaborator

@neo4j-team-graphql neo4j-team-graphql commented Oct 28, 2024

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to 7.x, this PR will be updated.

Releases

@neo4j/[email protected]

Major Changes

  • #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/[email protected]

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-team-graphql neo4j-team-graphql force-pushed the changeset-release/7.x branch 4 times, most recently from b4846f0 to c869e53 Compare November 7, 2024 09:26
@neo4j-team-graphql neo4j-team-graphql force-pushed the changeset-release/7.x branch 11 times, most recently from 59167f6 to 54e41ff Compare November 14, 2024 16:16
@neo4j-team-graphql neo4j-team-graphql force-pushed the changeset-release/7.x branch 7 times, most recently from 96b2947 to a141944 Compare November 21, 2024 14:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant