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

Support generic operator for relationship filters #5873

Merged
25 changes: 25 additions & 0 deletions .changeset/unlucky-spoons-trade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
"@neo4j/graphql": minor
---

Introduce a new style for filtering relationships and connections.
The quantifiers `SOME` | `NONE` | `SINGLE` | `ALL` are now available as a nested input object.

**Relationship**

```graphql
{
movies(where: { genres: { some: { name: { equals: "some genre" } } } }) {
actorCount
}
}
```

**Connection**
```graphql
{
movies(where: { genresConnection: { some: { node: { name: { equals: "some genre" } } } } }) {
actorCount
}
}
```

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import type { Annotations } from "../../annotation/Annotation";
import type { Argument } from "../../argument/Argument";
import type { Attribute } from "../../attribute/Attribute";
import { AttributeAdapter } from "../../attribute/model-adapters/AttributeAdapter";
import { ListFiltersAdapter } from "../../attribute/model-adapters/ListFiltersAdapter";
import type { Entity } from "../../entity/Entity";
import type { EntityAdapter } from "../../entity/EntityAdapter";
import { ConcreteEntityAdapter } from "../../entity/model-adapters/ConcreteEntityAdapter";
Expand All @@ -35,7 +34,6 @@ import type { NestedOperation, QueryDirection, Relationship, RelationshipDirecti
import { RelationshipOperations } from "./RelationshipOperations";

export class RelationshipAdapter {
private _listFiltersModel: ListFiltersAdapter | undefined;
public readonly name: string;
public readonly type: string;
public readonly attributes: Map<string, AttributeAdapter> = new Map();
Expand Down Expand Up @@ -116,15 +114,6 @@ export class RelationshipAdapter {
}
return this._operations;
}
public get listFiltersModel(): ListFiltersAdapter | undefined {
if (!this._listFiltersModel) {
if (!this.isList) {
return;
}
this._listFiltersModel = new ListFiltersAdapter(this);
}
return this._listFiltersModel;
}

public get singular(): string {
if (!this._singular) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import { RelationshipNestedOperationsOption } from "../../../constants";
import type { Annotations } from "../../annotation/Annotation";
import type { Argument } from "../../argument/Argument";
import type { AttributeAdapter } from "../../attribute/model-adapters/AttributeAdapter";
import { ListFiltersAdapter } from "../../attribute/model-adapters/ListFiltersAdapter";
import type { Entity } from "../../entity/Entity";
import type { EntityAdapter } from "../../entity/EntityAdapter";
import { ConcreteEntityAdapter } from "../../entity/model-adapters/ConcreteEntityAdapter";
Expand All @@ -35,7 +34,6 @@ import { RelationshipAdapter } from "./RelationshipAdapter";
import { RelationshipDeclarationOperations } from "./RelationshipDeclarationOperations";

export class RelationshipDeclarationAdapter {
private _listFiltersModel: ListFiltersAdapter | undefined;
public readonly name: string;
public readonly source: EntityAdapter;
private rawEntity: Entity;
Expand Down Expand Up @@ -91,16 +89,6 @@ export class RelationshipDeclarationAdapter {
this.firstDeclaredInTypeName = firstDeclaredInTypeName;
}

public get listFiltersModel(): ListFiltersAdapter | undefined {
if (!this._listFiltersModel) {
if (!this.isList) {
return;
}
this._listFiltersModel = new ListFiltersAdapter(this);
}
return this._listFiltersModel;
}

public get operations(): RelationshipDeclarationOperations {
if (!this._operations) {
return new RelationshipDeclarationOperations(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
* limitations under the License.
*/

import type { RelationshipDeclarationAdapter } from "./RelationshipDeclarationAdapter";
import { RelationshipBaseOperations } from "./RelationshipBaseOperations";
import type { RelationshipDeclarationAdapter } from "./RelationshipDeclarationAdapter";

export class RelationshipDeclarationOperations extends RelationshipBaseOperations<RelationshipDeclarationAdapter> {
constructor(relationshipDeclaration: RelationshipDeclarationAdapter) {
Expand All @@ -36,4 +36,12 @@ export class RelationshipDeclarationOperations extends RelationshipBaseOperation
public get relationshipPropertiesFieldTypename(): string {
return `${this.relationshipFieldTypename}Properties`;
}

public get relationshipFiltersTypeName(): string {
return `${this.prefixForTypename}RelationshipFilters`;
}

public get connectionFiltersTypeName(): string {
return `${this.prefixForTypename}ConnectionFilters`;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,12 @@ export class RelationshipOperations extends RelationshipBaseOperations<Relations
public get edgeSubscriptionWhereInputTypeName(): string {
return `${this.edgePrefix}SubscriptionWhere`;
}

public get relationshipFiltersTypeName(): string {
return `${this.prefixForTypename}RelationshipFilters`;
}

public get connectionFiltersTypeName(): string {
return `${this.prefixForTypename}ConnectionFilters`;
}
}
Loading