Skip to content

Commit

Permalink
Merge pull request #5390 from neo4j/update-relationship-filters-6
Browse files Browse the repository at this point in the history
Update relationship filters 6
  • Loading branch information
angrykoala authored Jul 26, 2024
2 parents 60948ec + 3333c13 commit dc5c737
Show file tree
Hide file tree
Showing 18 changed files with 100 additions and 98 deletions.
4 changes: 2 additions & 2 deletions packages/graphql/src/api-v6/queryIRFactory/FilterFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,9 @@ export class FilterFactory {
const relationshipAdapter = new RelationshipAdapter(relationship);

const target = relationshipAdapter.target as ConcreteEntityAdapter;
const edgeFilters = filters.edges ?? {};

return Object.entries(edgeFilters).map(([rawOperator, filter]) => {
return Object.entries(filters).map(([rawOperator, edgeFilter]) => {
const filter = edgeFilter.edges;
const relatedNodeFilters = this.createFilters({
where: filter,
relationship: relationship,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,14 @@ export type NumberFilters = WithLogicalOperations<{
}>;

export type RelationshipFilters = {
edges?: {
some?: GraphQLEdgeWhere;
single?: GraphQLEdgeWhere;
all?: GraphQLEdgeWhere;
none?: GraphQLEdgeWhere;
};
some?: RelationshipEdgeWhere;
single?: RelationshipEdgeWhere;
all?: RelationshipEdgeWhere;
none?: RelationshipEdgeWhere;
};

type RelationshipEdgeWhere = {
edges: GraphQLEdgeWhere;
};

type WithLogicalOperations<T> = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ export class RelatedEntityFilterSchemaTypes extends FilterSchemaTypes<RelatedEnt
AND: itc.NonNull.List,
OR: itc.NonNull.List,
NOT: itc,
edges: this.edgeListWhere,
all: this.edgeListWhere,
none: this.edgeListWhere,
single: this.edgeListWhere,
some: this.edgeListWhere,
},
};
}
Expand All @@ -78,10 +81,7 @@ export class RelatedEntityFilterSchemaTypes extends FilterSchemaTypes<RelatedEnt
AND: itc.NonNull.List,
OR: itc.NonNull.List,
NOT: itc,
all: this.edgeWhere,
none: this.edgeWhere,
single: this.edgeWhere,
some: this.edgeWhere,
edges: this.edgeWhere,
},
};
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ describe("Relationship filters with all", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { all: { node: { name: { equals: "Keanu" } } } } } } }
where: { node: { actors: { all: { edges: { node: { name: { equals: "Keanu" } } } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -99,7 +99,7 @@ describe("Relationship filters with all", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { all: { properties: { year: { equals: 1999 } } } } } } }
where: { node: { actors: { all: { edges: { properties: { year: { equals: 1999 } } } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -133,7 +133,7 @@ describe("Relationship filters with all", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { all: { OR: [{ properties: { year: { equals: 1999 } } }, { node: { name: { equals: "Keanu" } } }] } } } } }
where: { node: { actors: { all: { edges: { OR: [{ properties: { year: { equals: 1999 } } }, { node: { name: { equals: "Keanu" } } }] } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -172,7 +172,7 @@ describe("Relationship filters with all", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { all: { NOT: { node: { name: { equals: "Keanu" } } } } } } } }
where: { node: { actors: { all: { edges: { NOT: { node: { name: { equals: "Keanu" } } } } } } } }
) {
connection {
edges {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ describe("Relationship filters with none", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { none: { node: { name: { equals: "Keanu" } } } } } } }
where: { node: { actors: { none: { edges: { node: { name: { equals: "Keanu" } } } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -104,7 +104,7 @@ describe("Relationship filters with none", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { none: { properties: { year: { equals: 1999 } } } } } } }
where: { node: { actors: { none: { edges: { properties: { year: { equals: 1999 } } } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -143,7 +143,7 @@ describe("Relationship filters with none", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { none: { OR: [{ properties: { year: { equals: 1999 } } }, { node: { name: { equals: "Keanu" } } }] } } } } }
where: { node: { actors: { none: { edges: { OR: [{ properties: { year: { equals: 1999 } } }, { node: { name: { equals: "Keanu" } } }] } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -177,7 +177,7 @@ describe("Relationship filters with none", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { none: { NOT: { node: { name: { equals: "Keanu" } } } } } } } }
where: { node: { actors: { none: { edges: { NOT: { node: { name: { equals: "Keanu" } } } } } } } }
) {
connection {
edges {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ describe("Relationship filters with single", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { single: { node: { name: { equals: "Keanu" } } } } } } }
where: { node: { actors: { single: { edges: { node: { name: { equals: "Keanu" } } } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -101,7 +101,7 @@ describe("Relationship filters with single", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { single: { properties: { year: { equals: 1999 } } } } } } }
where: { node: { actors: { single: { edges: { properties: { year: { equals: 1999 } } } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -135,7 +135,7 @@ describe("Relationship filters with single", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { single: { OR: [{ properties: { year: { equals: 1999 } } }, { node: { name: { equals: "Keanu" } } }] } } } } }
where: { node: { actors: { single: { edges: { OR: [{ properties: { year: { equals: 1999 } } }, { node: { name: { equals: "Keanu" } } }] } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -174,7 +174,7 @@ describe("Relationship filters with single", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { single: { NOT: { node: { name: { equals: "Keanu" } } } } } } } }
where: { node: { actors: { single: { edges: { NOT: { node: { name: { equals: "Keanu" } } } } } } } }
) {
connection {
edges {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ describe("Relationship filters with some", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { some: { node: { name: { equals: "Keanu" } } } } } } }
where: { node: { actors: { some: { edges: { node: { name: { equals: "Keanu" } } } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -104,7 +104,7 @@ describe("Relationship filters with some", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { some: { properties: { year: { equals: 1999 } } } } } } }
where: { node: { actors: { some: { edges: { properties: { year: { equals: 1999 } } } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -143,7 +143,7 @@ describe("Relationship filters with some", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { some: { OR: [{ properties: { year: { equals: 1999 } } }, { node: { name: { equals: "Keanu" } } }] } } } } }
where: { node: { actors: { some: { edges: { OR: [{ properties: { year: { equals: 1999 } } }, { node: { name: { equals: "Keanu" } } }] } } } } }
) {
connection {
edges {
Expand Down Expand Up @@ -187,7 +187,7 @@ describe("Relationship filters with some", () => {
const query = /* GraphQL */ `
query {
${Movie.plural}(
where: { node: { actors: { edges: { some: { NOT: { node: { name: { equals: "Keanu" } } } } } } } }
where: { node: { actors: { some: { edges: { NOT: { node: { name: { equals: "Keanu" } } } } } } } }
) {
connection {
edges {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ describe("https://github.com/neo4j/graphql/issues/190", () => {
test("Example 1", async () => {
const query = /* GraphQL */ `
query {
${User.plural}(where: { node: { demographics: { edges: { some: {node: { type: { equals: "Gender" }, value: { equals: "Female" } } } } } } }) {
${User.plural}(where: { node: { demographics: { some: { edges: {node: { type: { equals: "Gender" }, value: { equals: "Female" } } } } } } }) {
connection {
edges {
node {
Expand Down Expand Up @@ -141,8 +141,8 @@ describe("https://github.com/neo4j/graphql/issues/190", () => {
where: {
node: {
demographics: {
edges: {
some: {
some: {
edges: {
node: {
OR: [{ type: {equals: "Gender"}, value:{equals: "Female"} }, { type: {equals: "State"} }, { type: {equals: "Age"} }]
}
Expand Down
20 changes: 10 additions & 10 deletions packages/graphql/tests/api-v6/integration/issues/582.int.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,13 @@ describe("https://github.com/neo4j/graphql/issues/582", () => {
node: {
type: { equals: "Cat" },
children: {
edges: {
some: {
some: {
edges: {
node: {
type: { equals: "Dog" },
parents: {
edges: {
some: {
some: {
edges: {
node: {
type: { equals: "Bird" },
},
Expand Down Expand Up @@ -119,18 +119,18 @@ describe("https://github.com/neo4j/graphql/issues/582", () => {
node: {
type: { equals: "Cat" },
children: {
edges: {
some: {
some: {
edges: {
node: {
type: { equals: "Dog" },
parents: {
edges: {
some: {
some: {
edges: {
node: {
type: { equals: "Bird" },
children: {
edges: {
some: {
some: {
edges: {
node: {
type: { equals: "Fish" },
},
Expand Down
40 changes: 20 additions & 20 deletions packages/graphql/tests/api-v6/schema/relationship.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,7 @@ describe("Relationships", () => {
AND: [ActorMoviesEdgeListWhere!]
NOT: ActorMoviesEdgeListWhere
OR: [ActorMoviesEdgeListWhere!]
all: ActorMoviesEdgeWhere
none: ActorMoviesEdgeWhere
single: ActorMoviesEdgeWhere
some: ActorMoviesEdgeWhere
edges: ActorMoviesEdgeWhere
}
input ActorMoviesEdgeSort {
Expand All @@ -102,7 +99,10 @@ describe("Relationships", () => {
AND: [ActorMoviesNestedOperationWhere!]
NOT: ActorMoviesNestedOperationWhere
OR: [ActorMoviesNestedOperationWhere!]
edges: ActorMoviesEdgeListWhere
all: ActorMoviesEdgeListWhere
none: ActorMoviesEdgeListWhere
single: ActorMoviesEdgeListWhere
some: ActorMoviesEdgeListWhere
}
type ActorMoviesOperation {
Expand Down Expand Up @@ -162,10 +162,7 @@ describe("Relationships", () => {
AND: [MovieActorsEdgeListWhere!]
NOT: MovieActorsEdgeListWhere
OR: [MovieActorsEdgeListWhere!]
all: MovieActorsEdgeWhere
none: MovieActorsEdgeWhere
single: MovieActorsEdgeWhere
some: MovieActorsEdgeWhere
edges: MovieActorsEdgeWhere
}
input MovieActorsEdgeSort {
Expand All @@ -183,7 +180,10 @@ describe("Relationships", () => {
AND: [MovieActorsNestedOperationWhere!]
NOT: MovieActorsNestedOperationWhere
OR: [MovieActorsNestedOperationWhere!]
edges: MovieActorsEdgeListWhere
all: MovieActorsEdgeListWhere
none: MovieActorsEdgeListWhere
single: MovieActorsEdgeListWhere
some: MovieActorsEdgeListWhere
}
type MovieActorsOperation {
Expand Down Expand Up @@ -342,10 +342,7 @@ describe("Relationships", () => {
AND: [ActorMoviesEdgeListWhere!]
NOT: ActorMoviesEdgeListWhere
OR: [ActorMoviesEdgeListWhere!]
all: ActorMoviesEdgeWhere
none: ActorMoviesEdgeWhere
single: ActorMoviesEdgeWhere
some: ActorMoviesEdgeWhere
edges: ActorMoviesEdgeWhere
}
input ActorMoviesEdgeSort {
Expand All @@ -365,7 +362,10 @@ describe("Relationships", () => {
AND: [ActorMoviesNestedOperationWhere!]
NOT: ActorMoviesNestedOperationWhere
OR: [ActorMoviesNestedOperationWhere!]
edges: ActorMoviesEdgeListWhere
all: ActorMoviesEdgeListWhere
none: ActorMoviesEdgeListWhere
single: ActorMoviesEdgeListWhere
some: ActorMoviesEdgeListWhere
}
type ActorMoviesOperation {
Expand Down Expand Up @@ -438,10 +438,7 @@ describe("Relationships", () => {
AND: [MovieActorsEdgeListWhere!]
NOT: MovieActorsEdgeListWhere
OR: [MovieActorsEdgeListWhere!]
all: MovieActorsEdgeWhere
none: MovieActorsEdgeWhere
single: MovieActorsEdgeWhere
some: MovieActorsEdgeWhere
edges: MovieActorsEdgeWhere
}
input MovieActorsEdgeSort {
Expand All @@ -461,7 +458,10 @@ describe("Relationships", () => {
AND: [MovieActorsNestedOperationWhere!]
NOT: MovieActorsNestedOperationWhere
OR: [MovieActorsNestedOperationWhere!]
edges: MovieActorsEdgeListWhere
all: MovieActorsEdgeListWhere
none: MovieActorsEdgeListWhere
single: MovieActorsEdgeListWhere
some: MovieActorsEdgeListWhere
}
type MovieActorsOperation {
Expand Down
10 changes: 5 additions & 5 deletions packages/graphql/tests/api-v6/schema/types/array.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -283,10 +283,7 @@ describe("Scalars", () => {
AND: [NodeTypeRelatedNodeEdgeListWhere!]
NOT: NodeTypeRelatedNodeEdgeListWhere
OR: [NodeTypeRelatedNodeEdgeListWhere!]
all: NodeTypeRelatedNodeEdgeWhere
none: NodeTypeRelatedNodeEdgeWhere
single: NodeTypeRelatedNodeEdgeWhere
some: NodeTypeRelatedNodeEdgeWhere
edges: NodeTypeRelatedNodeEdgeWhere
}
input NodeTypeRelatedNodeEdgeWhere {
Expand All @@ -301,7 +298,10 @@ describe("Scalars", () => {
AND: [NodeTypeRelatedNodeNestedOperationWhere!]
NOT: NodeTypeRelatedNodeNestedOperationWhere
OR: [NodeTypeRelatedNodeNestedOperationWhere!]
edges: NodeTypeRelatedNodeEdgeListWhere
all: NodeTypeRelatedNodeEdgeListWhere
none: NodeTypeRelatedNodeEdgeListWhere
single: NodeTypeRelatedNodeEdgeListWhere
some: NodeTypeRelatedNodeEdgeListWhere
}
type NodeTypeRelatedNodeOperation {
Expand Down
Loading

0 comments on commit dc5c737

Please sign in to comment.