diff --git a/dockerfiles/db/setup.sql b/dockerfiles/db/setup.sql
index 7c72429e..8c2db0fb 100644
--- a/dockerfiles/db/setup.sql
+++ b/dockerfiles/db/setup.sql
@@ -58,6 +58,7 @@ create table blog_post(
blog_id integer not null references blog(id) on delete cascade,
title varchar(255) not null,
body varchar(10000),
+ tags TEXT[],
status blog_post_status not null,
created_at timestamp not null
);
@@ -79,5 +80,15 @@ values
((select id from account where email ilike 'a%'), 'A: Blog 3', 'a desc3', now()),
((select id from account where email ilike 'b%'), 'B: Blog 3', 'b desc1', now());
+insert into blog_post (blog_id, title, body, tags, status, created_at)
+values
+ ((SELECT id FROM blog WHERE name = 'A: Blog 1'), 'Post 1 in A Blog 1', 'Content for post 1 in A Blog 1', '{"tech", "update"}', 'RELEASED', NOW()),
+ ((SELECT id FROM blog WHERE name = 'A: Blog 1'), 'Post 2 in A Blog 1', 'Content for post 2 in A Blog 1', '{"announcement", "tech"}', 'PENDING', NOW()),
+ ((SELECT id FROM blog WHERE name = 'A: Blog 2'), 'Post 1 in A Blog 2', 'Content for post 1 in A Blog 2', '{"personal"}', 'RELEASED', NOW()),
+ ((SELECT id FROM blog WHERE name = 'A: Blog 2'), 'Post 2 in A Blog 2', 'Content for post 2 in A Blog 2', '{"update"}', 'RELEASED', NOW()),
+ ((SELECT id FROM blog WHERE name = 'A: Blog 3'), 'Post 1 in A Blog 3', 'Content for post 1 in A Blog 3', '{"travel", "adventure"}', 'PENDING', NOW()),
+ ((SELECT id FROM blog WHERE name = 'B: Blog 3'), 'Post 1 in B Blog 3', 'Content for post 1 in B Blog 3', '{"tech", "review"}', 'RELEASED', NOW()),
+ ((SELECT id FROM blog WHERE name = 'B: Blog 3'), 'Post 2 in B Blog 3', 'Content for post 2 in B Blog 3', '{"coding", "tutorial"}', 'PENDING', NOW());
+
comment on schema public is '@graphql({"inflect_names": true})';
diff --git a/docs/api.md b/docs/api.md
index d6f71a7b..caf4d5ec 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -526,6 +526,7 @@ Where the `
Filter` type enumerates filterable fields and their associated
id: IntFilter
name: StringFilter
description: StringFilter
+ tags: StringListFilter
createdAt: DatetimeFilter
updatedAt: DatetimeFilter
and: [BlogFilter!]
@@ -575,6 +576,25 @@ Where the `Filter` type enumerates filterable fields and their associated
}
```
+=== "StringListFilter"
+
+ ```graphql
+ """
+ Boolean expression comparing fields on type "StringList"
+ """
+ input StringListFilter {
+ cd: [String!]
+ cs: [String!]
+ eq: [String!]
+ gt: [String!]
+ gte: [String!]
+ lt: [String!]
+ lte: [String!]
+ neq: [String!]
+ ov: [String!]
+ }
+ ```
+
=== "FilterIs"
```graphql
@@ -587,21 +607,24 @@ Where the `Filter` type enumerates filterable fields and their associated
The following list shows the operators that may be available on `Filter` types.
-| Operator | Description |
-| ----------- | -------------------------------------------------|
-| eq | Equal To |
-| neq | Not Equal To |
-| gt | Greater Than |
-| gte | Greater Than Or Equal To |
-| in | Contained by Value List |
-| lt | Less Than |
-| lte | Less Than Or Equal To |
-| is | Null or Not Null |
-| startsWith | Starts with prefix |
-| like | Pattern Match. '%' as wildcard |
-| ilike | Pattern Match. '%' as wildcard. Case Insensitive |
-| regex | POSIX Regular Expression Match |
-| iregex | POSIX Regular Expression Match. Case Insensitive |
+| Operator | Description |
+|------------|-------------------------------------------------------------------|
+| eq | Equal To |
+| neq | Not Equal To |
+| gt | Greater Than |
+| gte | Greater Than Or Equal To |
+| in | Contained by Value List |
+| lt | Less Than |
+| lte | Less Than Or Equal To |
+| is | Null or Not Null |
+| startsWith | Starts with prefix |
+| like | Pattern Match. '%' as wildcard |
+| ilike | Pattern Match. '%' as wildcard. Case Insensitive |
+| regex | POSIX Regular Expression Match |
+| iregex | POSIX Regular Expression Match. Case Insensitive |
+| cs | Contains. Applies to array columns only. |
+| cd | Contained in. Applies to array columns only. |
+| ov | Overlap (have points in common). Applies to array columns only. |
Not all operators are available on every `Filter` type. For example, `UUIDFilter` only supports `eq` and `neq` because `UUID`s are not ordered.
@@ -650,7 +673,265 @@ Not all operators are available on every `Filter` type. For example, `UUID
```
-** Example: and/or **
+**Example: array column**
+
+The `cs` filter is used to return results where all the elements in the input array appear in the array column.
+
+=== "`cs` Filter Query"
+ ```graphql
+ {
+ blogCollection(
+ filter: {tags: {cs: ["tech", "innovation"]}},
+ ) {
+ edges {
+ cursor
+ node {
+ id
+ name
+ tags
+ createdAt
+ }
+ }
+ }
+ }
+ ```
+
+=== "`cs` Filter Result"
+ ```json
+ {
+ "data": {
+ "blogCollection": {
+ "edges": [
+ {
+ "node": {
+ "id": 1,
+ "name": "A: Blog 1",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["tech", "innovation"]
+ },
+ "cursor": "WzFd"
+ },
+ {
+ "node": {
+ "id": 2,
+ "name": "A: Blog 2",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["tech", "innovation", "entrepreneurship"]
+ },
+ "cursor": "WzJd"
+ }
+ ]
+ }
+ }
+ }
+ ```
+
+The `cs` filter can also accept a single scalar.
+
+=== "`cs` Filter with Scalar Query"
+ ```graphql
+ {
+ blogCollection(
+ filter: {tags: {cs: "tech"}},
+ ) {
+ edges {
+ cursor
+ node {
+ id
+ name
+ tags
+ createdAt
+ }
+ }
+ }
+ }
+ ```
+
+=== "`cs` Filter with Scalar Result"
+ ```json
+ {
+ "data": {
+ "blogCollection": {
+ "edges": [
+ {
+ "node": {
+ "id": 1,
+ "name": "A: Blog 1",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["tech", "innovation"]
+ },
+ "cursor": "WzFd"
+ },
+ {
+ "node": {
+ "id": 2,
+ "name": "A: Blog 2",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["tech", "innovation", "entrepreneurship"]
+ },
+ "cursor": "WzJd"
+ }
+ ]
+ }
+ }
+ }
+ ```
+
+The `cd` filter is used to return results where every element of the array column appears in the input array.
+
+=== "`cd` Filter Query"
+ ```graphql
+ {
+ blogCollection(
+ filter: {tags: {cd: ["entrepreneurship", "innovation", "tech"]}},
+ ) {
+ edges {
+ cursor
+ node {
+ id
+ name
+ tags
+ createdAt
+ }
+ }
+ }
+ }
+ ```
+
+=== "`cd` Filter Result"
+ ```json
+ {
+ "data": {
+ "blogCollection": {
+ "edges": [
+ {
+ "node": {
+ "id": 1,
+ "name": "A: Blog 1",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["tech", "innovation"]
+ },
+ "cursor": "WzFd"
+ },
+ {
+ "node": {
+ "id": 3,
+ "name": "A: Blog 3",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["innovation", "entrepreneurship"]
+ },
+ "cursor": "WzNd"
+ }
+ ]
+ }
+ }
+ }
+ ```
+
+The `cd` filter can also accept a single scalar. In this case, only results where the only element in the array column is the input scalar are returned.
+
+=== "`cd` Filter with Scalar Query"
+ ```graphql
+ {
+ blogCollection(
+ filter: {tags: {cd: "travel"}},
+ ) {
+ edges {
+ cursor
+ node {
+ id
+ name
+ tags
+ createdAt
+ }
+ }
+ }
+ }
+ ```
+
+=== "`cd` Filter with Scalar Result"
+ ```json
+ {
+ "data": {
+ "blogCollection": {
+ "edges": [
+ {
+ "node": {
+ "id": 4,
+ "name": "A: Blog 4",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["travel"]
+ },
+ "cursor": "WzPd"
+ }
+ ]
+ }
+ }
+ }
+ ```
+
+The `ov` filter is used to return results where the array column and the input array have at least one element in common.
+
+=== "`ov` Filter Query"
+ ```graphql
+ {
+ blogCollection(
+ filter: {tags: {ov: ["tech", "travel"]}},
+ ) {
+ edges {
+ cursor
+ node {
+ id
+ name
+ tags
+ createdAt
+ }
+ }
+ }
+ }
+ ```
+
+=== "`ov` Filter Result"
+ ```json
+ {
+ "data": {
+ "blogCollection": {
+ "edges": [
+ {
+ "node": {
+ "id": 1,
+ "name": "A: Blog 1",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["tech", "innovation"]
+ },
+ "cursor": "WzFd"
+ },
+ {
+ "node": {
+ "id": 2,
+ "name": "A: Blog 2",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["tech", "innovation", "entrepreneurship"]
+ },
+ "cursor": "WzJd"
+ },
+ {
+ "node": {
+ "id": 4,
+ "name": "A: Blog 4",
+ "createdAt": "2023-07-24T04:01:09.882781",
+ "tags": ["travel"]
+ },
+ "cursor": "WzPd"
+ }
+ ]
+ }
+ }
+ }
+ ```
+
+
+**Example: and/or**
Multiple filters can be combined with `and`, `or` and `not` operators. The `and` and `or` operators accept a list of `Filter`.
@@ -754,7 +1035,7 @@ Multiple filters can be combined with `and`, `or` and `not` operators. The `and`
```
-** Example: not **
+**Example: not**
`not` accepts a single `Filter`.
@@ -819,7 +1100,7 @@ Multiple filters can be combined with `and`, `or` and `not` operators. The `and`
```
-** Example: nested composition **
+**Example: nested composition**
The `and`, `or` and `not` operators can be arbitrarily nested inside each other.
@@ -888,7 +1169,7 @@ The `and`, `or` and `not` operators can be arbitrarily nested inside each other.
}
```
-** Example: empty **
+**Example: empty**
Empty filters are ignored, i.e. they behave as if the operator was not specified at all.
@@ -963,7 +1244,7 @@ Empty filters are ignored, i.e. they behave as if the operator was not specified
```
-** Example: implicit and **
+**Example: implicit and**
Multiple column filters at the same level will be implicitly combined with boolean `and`. In the following example the `id: {eq: 1}` and `name: {eq: "A: Blog 1"}` will be `and`ed.
diff --git a/docs/assets/demo_schema.graphql b/docs/assets/demo_schema.graphql
index bbf89ceb..33095f4d 100644
--- a/docs/assets/demo_schema.graphql
+++ b/docs/assets/demo_schema.graphql
@@ -125,6 +125,21 @@ input BigFloatFilter {
neq: BigFloat
}
+"""
+Boolean expression comparing fields on type "BigFloatList"
+"""
+input BigFloatListFilter {
+ cd: [BigFloat!]
+ cs: [BigFloat!]
+ eq: [BigFloat!]
+ gt: [BigFloat!]
+ gte: [BigFloat!]
+ lt: [BigFloat!]
+ lte: [BigFloat!]
+ neq: [BigFloat!]
+ ov: [BigFloat!]
+}
+
"""An arbitrary size integer represented as a string"""
scalar BigInt
@@ -142,6 +157,21 @@ input BigIntFilter {
neq: BigInt
}
+"""
+Boolean expression comparing fields on type "BigIntList"
+"""
+input BigIntListFilter {
+ cd: [BigInt!]
+ cs: [BigInt!]
+ eq: [BigInt!]
+ gt: [BigInt!]
+ gte: [BigInt!]
+ lt: [BigInt!]
+ lte: [BigInt!]
+ neq: [BigInt!]
+ ov: [BigInt!]
+}
+
type Blog implements Node {
"""Globally Unique Record Identifier"""
nodeId: ID!
@@ -149,6 +179,7 @@ type Blog implements Node {
ownerId: Int!
name: String!
description: String
+ tags: [String]
createdAt: Datetime!
updatedAt: Datetime!
owner: Account!
@@ -201,6 +232,7 @@ input BlogFilter {
ownerId: IntFilter
name: StringFilter
description: StringFilter
+ tags: StringListFilter
createdAt: DatetimeFilter
updatedAt: DatetimeFilter
nodeId: IDFilter
@@ -384,6 +416,21 @@ input BooleanFilter {
is: FilterIs
}
+"""
+Boolean expression comparing fields on type "BooleanList"
+"""
+input BooleanListFilter {
+ cd: [Boolean!]
+ cs: [Boolean!]
+ eq: [Boolean!]
+ gt: [Boolean!]
+ gte: [Boolean!]
+ lt: [Boolean!]
+ lte: [Boolean!]
+ neq: [Boolean!]
+ ov: [Boolean!]
+}
+
"""
An opaque string using for tracking a position in results during pagination
"""
@@ -406,6 +453,21 @@ input DateFilter {
neq: Date
}
+"""
+Boolean expression comparing fields on type "DateList"
+"""
+input DateListFilter {
+ cd: [Date!]
+ cs: [Date!]
+ eq: [Date!]
+ gt: [Date!]
+ gte: [Date!]
+ lt: [Date!]
+ lte: [Date!]
+ neq: [Date!]
+ ov: [Date!]
+}
+
"""A date and time"""
scalar Datetime
@@ -423,6 +485,21 @@ input DatetimeFilter {
neq: Datetime
}
+"""
+Boolean expression comparing fields on type "DatetimeList"
+"""
+input DatetimeListFilter {
+ cd: [Datetime!]
+ cs: [Datetime!]
+ eq: [Datetime!]
+ gt: [Datetime!]
+ gte: [Datetime!]
+ lt: [Datetime!]
+ lte: [Datetime!]
+ neq: [Datetime!]
+ ov: [Datetime!]
+}
+
enum FilterIs {
NULL
NOT_NULL
@@ -442,6 +519,21 @@ input FloatFilter {
neq: Float
}
+"""
+Boolean expression comparing fields on type "FloatList"
+"""
+input FloatListFilter {
+ cd: [Float!]
+ cs: [Float!]
+ eq: [Float!]
+ gt: [Float!]
+ gte: [Float!]
+ lt: [Float!]
+ lte: [Float!]
+ neq: [Float!]
+ ov: [Float!]
+}
+
"""
Boolean expression comparing fields on type "ID"
"""
@@ -449,6 +541,21 @@ input IDFilter {
eq: ID
}
+"""
+Boolean expression comparing fields on type "IDList"
+"""
+input IDListFilter {
+ cd: [ID!]
+ cs: [ID!]
+ eq: [ID!]
+ gt: [ID!]
+ gte: [ID!]
+ lt: [ID!]
+ lte: [ID!]
+ neq: [ID!]
+ ov: [ID!]
+}
+
"""
Boolean expression comparing fields on type "Int"
"""
@@ -463,6 +570,21 @@ input IntFilter {
neq: Int
}
+"""
+Boolean expression comparing fields on type "IntList"
+"""
+input IntListFilter {
+ cd: [Int!]
+ cs: [Int!]
+ eq: [Int!]
+ gt: [Int!]
+ gte: [Int!]
+ lt: [Int!]
+ lte: [Int!]
+ neq: [Int!]
+ ov: [Int!]
+}
+
"""A Javascript Object Notation value serialized as a string"""
scalar JSON
@@ -703,6 +825,21 @@ input StringFilter {
startsWith: String
}
+"""
+Boolean expression comparing fields on type "StringList"
+"""
+input StringListFilter {
+ cd: [String!]
+ cs: [String!]
+ eq: [String!]
+ gt: [String!]
+ gte: [String!]
+ lt: [String!]
+ lte: [String!]
+ neq: [String!]
+ ov: [String!]
+}
+
"""A time without date information"""
scalar Time
@@ -720,6 +857,21 @@ input TimeFilter {
neq: Time
}
+"""
+Boolean expression comparing fields on type "TimeList"
+"""
+input TimeListFilter {
+ cd: [Time!]
+ cs: [Time!]
+ eq: [Time!]
+ gt: [Time!]
+ gte: [Time!]
+ lt: [Time!]
+ lte: [Time!]
+ neq: [Time!]
+ ov: [Time!]
+}
+
"""A universally unique identifier"""
scalar UUID
@@ -732,3 +884,18 @@ input UUIDFilter {
is: FilterIs
neq: UUID
}
+
+"""
+Boolean expression comparing fields on type "UUIDList"
+"""
+input UUIDListFilter {
+ cd: [UUID!]
+ cs: [UUID!]
+ eq: [UUID!]
+ gt: [UUID!]
+ gte: [UUID!]
+ lt: [UUID!]
+ lte: [UUID!]
+ neq: [UUID!]
+ ov: [UUID!]
+}
diff --git a/docs/assets/demo_schema.sql b/docs/assets/demo_schema.sql
index 58a8a18d..2a74093b 100644
--- a/docs/assets/demo_schema.sql
+++ b/docs/assets/demo_schema.sql
@@ -16,6 +16,7 @@ create table blog(
owner_id integer not null references account(id),
name varchar(255) not null,
description varchar(255),
+ tags text[],
created_at timestamp not null,
updated_at timestamp not null
);
diff --git a/src/builder.rs b/src/builder.rs
index 4ed5df54..038ba03d 100644
--- a/src/builder.rs
+++ b/src/builder.rs
@@ -1085,7 +1085,7 @@ fn create_filters(
let kv_map = match validated {
gson::Value::Absent | gson::Value::Null => return Ok(filters),
gson::Value::Object(kv) => kv,
- _ => return Err("Filter re-validation errror".to_string()),
+ _ => return Err("Filter re-validation error".to_string()),
};
for (k, op_to_v) in kv_map {
diff --git a/src/graphql.rs b/src/graphql.rs
index cb8c92e8..09d9339f 100644
--- a/src/graphql.rs
+++ b/src/graphql.rs
@@ -1116,6 +1116,7 @@ pub struct OrderByEntityType {
pub enum FilterableType {
Scalar(Scalar),
Enum(EnumType),
+ List(ListType),
}
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
@@ -1129,6 +1130,12 @@ impl FilterTypeType {
match &self.entity {
FilterableType::Scalar(s) => s.name().expect("scalar name should exist"),
FilterableType::Enum(e) => e.name().expect("enum type name should exist"),
+ FilterableType::List(l) => format!(
+ "{}List",
+ l.of_type()
+ .expect("inner list type should exist")
+ .name()
+ .expect("inner list type name should exist"))
}
}
}
@@ -3328,6 +3335,9 @@ pub enum FilterOp {
ILike,
RegEx,
IRegEx,
+ Contains,
+ ContainedBy,
+ Overlap,
}
impl ToString for FilterOp {
@@ -3346,6 +3356,9 @@ impl ToString for FilterOp {
Self::ILike => "ilike",
Self::RegEx => "regex",
Self::IRegEx => "iregex",
+ Self::Contains => "cs",
+ Self::ContainedBy => "cd",
+ Self::Overlap => "ov",
}
.to_string()
}
@@ -3369,6 +3382,9 @@ impl FromStr for FilterOp {
"ilike" => Ok(Self::ILike),
"regex" => Ok(Self::RegEx),
"iregex" => Ok(Self::IRegEx),
+ "cs" => Ok(Self::Contains),
+ "cd" => Ok(Self::ContainedBy),
+ "ov" => Ok(Self::Overlap),
_ => Err("Invalid filter operation".to_string()),
}
}
@@ -3541,6 +3557,8 @@ impl ___Type for FilterTypeType {
default_value: None,
sql_type: None,
},
+ // shouldn't happen since we've covered all cases in supported_ops
+ _ => panic!("encountered unknown FilterOp")
})
.collect()
}
@@ -3583,6 +3601,36 @@ impl ___Type for FilterTypeType {
},
]
}
+ FilterableType::List(list_type) => {
+ let supported_ops = vec![
+ FilterOp::Contains,
+ FilterOp::ContainedBy,
+ FilterOp::Equal,
+ FilterOp::GreaterThan,
+ FilterOp::GreaterThanEqualTo,
+ FilterOp::LessThan,
+ FilterOp::LessThanEqualTo,
+ FilterOp::NotEqual,
+ FilterOp::Overlap,
+ ];
+
+ supported_ops
+ .iter()
+ .map(|op| match op {
+ _ => __InputValue {
+ name_: op.to_string(),
+ type_: __Type::List(ListType {
+ type_: Box::new(__Type::NonNull(NonNullType {
+ type_: Box::new(*list_type.type_.clone()),
+ })),
+ }),
+ description: None,
+ default_value: None,
+ sql_type: None,
+ },
+ })
+ .collect()
+ }
};
infields.sort_by_key(|a| a.name());
@@ -3620,14 +3668,11 @@ impl ___Type for FilterEntityType {
.columns
.iter()
.filter(|x| x.permissions.is_selectable)
- // No filtering on arrays
- .filter(|x| !x.type_name.ends_with("[]"))
// No filtering on composites
.filter(|x| !self.schema.context.is_composite(x.type_oid))
// No filtering on json/b. they do not support = or <>
.filter(|x| !["json", "jsonb"].contains(&x.type_name.as_ref()))
.filter_map(|col| {
- // Should be a scalar
if let Some(utype) = sql_column_to_graphql_type(col, &self.schema) {
let column_graphql_name = self.schema.graphql_column_field_name(col);
@@ -3641,22 +3686,33 @@ impl ___Type for FilterEntityType {
not_column_exists = true;
}
- match utype.unmodified_type() {
- __Type::Scalar(s) => Some(__InputValue {
+ match utype.nullable_type() {
+ __Type::Scalar(s) => {
+ Some(__InputValue {
+ name_: column_graphql_name,
+ type_: __Type::FilterType(FilterTypeType {
+ entity: FilterableType::Scalar(s),
+ schema: Arc::clone(&self.schema),
+ }),
+ description: None,
+ default_value: None,
+ sql_type: Some(NodeSQLType::Column(Arc::clone(col))),
+ })
+ },
+ __Type::Enum(e) => Some(__InputValue {
name_: column_graphql_name,
type_: __Type::FilterType(FilterTypeType {
- entity: FilterableType::Scalar(s),
+ entity: FilterableType::Enum(e),
schema: Arc::clone(&self.schema),
}),
description: None,
default_value: None,
sql_type: Some(NodeSQLType::Column(Arc::clone(col))),
}),
- // ERROR HERE
- __Type::Enum(s) => Some(__InputValue {
+ __Type::List(l) => Some(__InputValue {
name_: column_graphql_name,
type_: __Type::FilterType(FilterTypeType {
- entity: FilterableType::Enum(s),
+ entity: FilterableType::List(l),
schema: Arc::clone(&self.schema),
}),
description: None,
@@ -3829,13 +3885,12 @@ impl ___Type for OrderByEntityType {
.columns
.iter()
.filter(|x| x.permissions.is_selectable)
- // No filtering on arrays
+ // No ordering by arrays
.filter(|x| !x.type_name.ends_with("[]"))
- // No filtering on composites
+ // No ordering by composites
.filter(|x| !self.schema.context.is_composite(x.type_oid))
- // No filtering on json/b. they do not support = or <>
+ // No ordering by json/b. they do not support = or <>
.filter(|x| !["json", "jsonb"].contains(&x.type_name.as_ref()))
- // TODO filter out arrays, json and composites
.map(|col| __InputValue {
name_: self.schema.graphql_column_field_name(col),
type_: __Type::OrderBy(OrderByType {}),
@@ -3968,6 +4023,72 @@ impl __Schema {
entity: FilterableType::Scalar(Scalar::Opaque),
schema: Arc::clone(&schema_rc),
}),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::ID))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::Int))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::Float))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::String(None)))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::Boolean))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::Date))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::Time))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::Datetime))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::BigInt))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::UUID))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
+ __Type::FilterType(FilterTypeType {
+ entity: FilterableType::List(ListType {
+ type_: Box::new(__Type::Scalar(Scalar::BigFloat))
+ }),
+ schema: Arc::clone(&schema_rc),
+ }),
__Type::Query(QueryType {
schema: Arc::clone(&schema_rc),
}),
diff --git a/src/transpile.rs b/src/transpile.rs
index fc9bcc24..3df92baf 100644
--- a/src/transpile.rs
+++ b/src/transpile.rs
@@ -714,6 +714,9 @@ impl FilterBuilderElem {
_ => {
let cast_type_name = match op {
FilterOp::In => format!("{}[]", column.type_name),
+ FilterOp::Contains => format!("{}[]", column.type_name),
+ FilterOp::ContainedBy => format!("{}[]", column.type_name),
+ FilterOp::Overlap => format!("{}[]", column.type_name),
_ => column.type_name.clone(),
};
@@ -735,6 +738,9 @@ impl FilterBuilderElem {
FilterOp::ILike => "ilike",
FilterOp::RegEx => "~",
FilterOp::IRegEx => "~*",
+ FilterOp::Contains => "@>",
+ FilterOp::ContainedBy => "<@",
+ FilterOp::Overlap => "&&",
FilterOp::Is => {
return Err("Error transpiling Is filter".to_string());
}
diff --git a/test/expected/omit_exotic_types.out b/test/expected/omit_exotic_types.out
index 545d18c1..4eb94751 100644
--- a/test/expected/omit_exotic_types.out
+++ b/test/expected/omit_exotic_types.out
@@ -1,8 +1,7 @@
begin;
/*
- Composite and array types are not currently supported as inputs
+ Composite types are not currently supported as inputs
- confirm composites are not allowed anywhere
- - confirm arrays are not allowed as input
*/
create type complex as (r int, i int);
create table something(
@@ -107,6 +106,9 @@ begin;
{ +
"name": "name" +
}, +
+ { +
+ "name": "tags" +
+ }, +
{ +
"name": "nodeId" +
}, +
diff --git a/test/expected/omit_weird_names.out b/test/expected/omit_weird_names.out
index e756663a..6d6d427d 100644
--- a/test/expected/omit_weird_names.out
+++ b/test/expected/omit_weird_names.out
@@ -24,18 +24,27 @@ begin;
{ +
"name": "BigFloatFilter" +
}, +
+ { +
+ "name": "BigFloatListFilter" +
+ }, +
{ +
"name": "BigInt" +
}, +
{ +
"name": "BigIntFilter" +
}, +
+ { +
+ "name": "BigIntListFilter" +
+ }, +
{ +
"name": "Boolean" +
}, +
{ +
"name": "BooleanFilter" +
}, +
+ { +
+ "name": "BooleanListFilter" +
+ }, +
{ +
"name": "Cursor" +
}, +
@@ -45,12 +54,18 @@ begin;
{ +
"name": "DateFilter" +
}, +
+ { +
+ "name": "DateListFilter" +
+ }, +
{ +
"name": "Datetime" +
}, +
{ +
"name": "DatetimeFilter" +
}, +
+ { +
+ "name": "DatetimeListFilter" +
+ }, +
{ +
"name": "FilterIs" +
}, +
@@ -60,18 +75,27 @@ begin;
{ +
"name": "FloatFilter" +
}, +
+ { +
+ "name": "FloatListFilter" +
+ }, +
{ +
"name": "ID" +
}, +
{ +
"name": "IDFilter" +
}, +
+ { +
+ "name": "IDListFilter" +
+ }, +
{ +
"name": "Int" +
}, +
{ +
"name": "IntFilter" +
}, +
+ { +
+ "name": "IntListFilter" +
+ }, +
{ +
"name": "JSON" +
}, +
@@ -99,18 +123,27 @@ begin;
{ +
"name": "StringFilter" +
}, +
+ { +
+ "name": "StringListFilter" +
+ }, +
{ +
"name": "Time" +
}, +
{ +
"name": "TimeFilter" +
}, +
+ { +
+ "name": "TimeListFilter" +
+ }, +
{ +
"name": "UUID" +
}, +
{ +
"name": "UUIDFilter" +
}, +
+ { +
+ "name": "UUIDListFilter" +
+ }, +
{ +
"name": "__Directive" +
}, +
diff --git a/test/expected/resolve___schema.out b/test/expected/resolve___schema.out
index 2abc049e..77f82d7f 100644
--- a/test/expected/resolve___schema.out
+++ b/test/expected/resolve___schema.out
@@ -101,6 +101,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "BigFloatFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BigFloatListFilter" +
+ }, +
{ +
"kind": "SCALAR", +
"name": "BigInt" +
@@ -109,6 +113,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "BigIntFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BigIntListFilter" +
+ }, +
{ +
"kind": "OBJECT", +
"name": "Blog" +
@@ -205,6 +213,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "BooleanFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BooleanListFilter" +
+ }, +
{ +
"kind": "SCALAR", +
"name": "Cursor" +
@@ -217,6 +229,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "DateFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "DateListFilter" +
+ }, +
{ +
"kind": "SCALAR", +
"name": "Datetime" +
@@ -225,6 +241,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "DatetimeFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "DatetimeListFilter" +
+ }, +
{ +
"kind": "ENUM", +
"name": "FilterIs" +
@@ -237,6 +257,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "FloatFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "FloatListFilter" +
+ }, +
{ +
"kind": "SCALAR", +
"name": "ID" +
@@ -245,6 +269,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "IDFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "IDListFilter" +
+ }, +
{ +
"kind": "SCALAR", +
"name": "Int" +
@@ -253,6 +281,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "IntFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "IntListFilter" +
+ }, +
{ +
"kind": "SCALAR", +
"name": "JSON" +
@@ -293,6 +325,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "StringFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringListFilter" +
+ }, +
{ +
"kind": "SCALAR", +
"name": "Time" +
@@ -301,6 +337,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "TimeFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "TimeListFilter" +
+ }, +
{ +
"kind": "SCALAR", +
"name": "UUID" +
@@ -309,6 +349,10 @@ begin;
"kind": "INPUT_OBJECT", +
"name": "UUIDFilter" +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "UUIDListFilter" +
+ }, +
{ +
"kind": "OBJECT", +
"name": "__Directive" +
diff --git a/test/expected/resolve_connection_filter.out b/test/expected/resolve_connection_filter.out
index 8a7bdc6d..4504278b 100644
--- a/test/expected/resolve_connection_filter.out
+++ b/test/expected/resolve_connection_filter.out
@@ -3,13 +3,14 @@ begin;
id int primary key,
is_verified bool,
name text,
- phone text
+ phone text,
+ tags text[]
);
- insert into public.account(id, is_verified, name, phone)
+ insert into public.account(id, is_verified, name, phone, tags)
values
- (1, true, 'foo', '1111111111'),
- (2, true, 'bar', null),
- (3, false, 'baz', '33333333333');
+ (1, true, 'foo', '1111111111', '{"customer", "priority"}'),
+ (2, true, 'bar', null, '{"customer"}'),
+ (3, false, 'baz', '33333333333', '{"lead", "priority"}');
savepoint a;
-- Filter by Int
select jsonb_pretty(
@@ -230,6 +231,186 @@ begin;
{"data": null, "errors": [{"message": "Error transpiling Is filter value type"}]}
(1 row)
+ rollback to savepoint a;
+ -- cs - array column contains the input scalar
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {cs: "customer"}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ jsonb_pretty
+---------------------------------
+ { +
+ "data": { +
+ "accountCollection": { +
+ "edges": [ +
+ { +
+ "node": { +
+ "id": 1+
+ } +
+ }, +
+ { +
+ "node": { +
+ "id": 2+
+ } +
+ } +
+ ] +
+ } +
+ } +
+ }
+(1 row)
+
+ rollback to savepoint a;
+ -- cd - array column is contained by input scalar (aka, the only value in the array column is the input scalar)
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {cd: "customer"}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ jsonb_pretty
+---------------------------------
+ { +
+ "data": { +
+ "accountCollection": { +
+ "edges": [ +
+ { +
+ "node": { +
+ "id": 2+
+ } +
+ } +
+ ] +
+ } +
+ } +
+ }
+(1 row)
+
+ rollback to savepoint a;
+ -- cs - array column contains the input array
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {cs: ["customer", "priority"]}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ jsonb_pretty
+---------------------------------
+ { +
+ "data": { +
+ "accountCollection": { +
+ "edges": [ +
+ { +
+ "node": { +
+ "id": 1+
+ } +
+ } +
+ ] +
+ } +
+ } +
+ }
+(1 row)
+
+ rollback to savepoint a;
+ -- cd - array column is contained by input array
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {cd: ["customer", "priority"]}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ jsonb_pretty
+---------------------------------
+ { +
+ "data": { +
+ "accountCollection": { +
+ "edges": [ +
+ { +
+ "node": { +
+ "id": 1+
+ } +
+ }, +
+ { +
+ "node": { +
+ "id": 2+
+ } +
+ } +
+ ] +
+ } +
+ } +
+ }
+(1 row)
+
+ rollback to savepoint a;
+ -- ov - array column overlaps with input array
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {ov: ["customer", "priority"]}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ jsonb_pretty
+---------------------------------
+ { +
+ "data": { +
+ "accountCollection": { +
+ "edges": [ +
+ { +
+ "node": { +
+ "id": 1+
+ } +
+ }, +
+ { +
+ "node": { +
+ "id": 2+
+ } +
+ }, +
+ { +
+ "node": { +
+ "id": 3+
+ } +
+ } +
+ ] +
+ } +
+ } +
+ }
+(1 row)
+
rollback to savepoint a;
-- variable is - is null
select graphql.resolve($$query AAA($nis: FilterIs) { accountCollection(filter: {phone: {is: $nis}}) { edges { node { id } } }}$$, '{"nis": "NULL"}');
diff --git a/test/expected/resolve_graphiql_schema.out b/test/expected/resolve_graphiql_schema.out
index bbacd6a7..213ca9ad 100644
--- a/test/expected/resolve_graphiql_schema.out
+++ b/test/expected/resolve_graphiql_schema.out
@@ -1056,6 +1056,181 @@ begin;
], +
"possibleTypes": null +
}, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BigFloatListFilter", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Boolean expression comparing fields on type \"BigFloatList\"", +
+ "inputFields": [ +
+ { +
+ "name": "cd", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "cs", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "eq", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "gt", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "gte", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lt", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lte", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "neq", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "ov", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigFloat", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
{ +
"kind": "SCALAR", +
"name": "BigInt", +
@@ -1170,76 +1345,251 @@ begin;
"possibleTypes": null +
}, +
{ +
- "kind": "OBJECT", +
- "name": "Blog", +
- "fields": [ +
+ "kind": "INPUT_OBJECT", +
+ "name": "BigIntListFilter", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Boolean expression comparing fields on type \"BigIntList\"", +
+ "inputFields": [ +
{ +
- "args": [ +
- ], +
- "name": "nodeId", +
+ "name": "cd", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "SCALAR", +
- "name": "ID", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
} +
}, +
- "description": "Globally Unique Record Identifier", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "id", +
+ "name": "cs", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
} +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "ownerId", +
+ "name": "eq", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
} +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "name", +
+ "name": "gt", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
} +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "gte", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lt", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lte", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "neq", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "ov", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "BigInt", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "Blog", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "nodeId", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Globally Unique Record Identifier", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "id", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "ownerId", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "name", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
}, +
{ +
"args": [ +
@@ -1655,6 +2005,16 @@ begin;
"description": null, +
"defaultValue": null +
}, +
+ { +
+ "name": "tags", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringListFilter", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
{ +
"name": "createdAt", +
"type": { +
@@ -3023,72 +3383,72 @@ begin;
], +
"possibleTypes": null +
}, +
- { +
- "kind": "SCALAR", +
- "name": "Cursor", +
- "fields": null, +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "An opaque string using for tracking a position in results during pagination", +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "SCALAR", +
- "name": "Date", +
- "fields": null, +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "A date wihout time information", +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "DateFilter", +
+ "name": "BooleanListFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "Boolean expression comparing fields on type \"Date\"", +
+ "description": "Boolean expression comparing fields on type \"BooleanList\"", +
"inputFields": [ +
{ +
- "name": "eq", +
+ "name": "cd", +
"type": { +
- "kind": "SCALAR", +
- "name": "Date", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "gt", +
+ "name": "cs", +
"type": { +
- "kind": "SCALAR", +
- "name": "Date", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "gte", +
+ "name": "eq", +
"type": { +
- "kind": "SCALAR", +
- "name": "Date", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "in", +
+ "name": "gt", +
"type": { +
"kind": "LIST", +
"name": null, +
@@ -3097,7 +3457,7 @@ begin;
"name": null, +
"ofType": { +
"kind": "SCALAR", +
- "name": "Date", +
+ "name": "Boolean", +
"ofType": null +
} +
} +
@@ -3106,21 +3466,37 @@ begin;
"defaultValue": null +
}, +
{ +
- "name": "is", +
+ "name": "gte", +
"type": { +
- "kind": "ENUM", +
- "name": "FilterIs", +
- "ofType": null +
- }, +
- "description": null, +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
"defaultValue": null +
}, +
{ +
"name": "lt", +
"type": { +
- "kind": "SCALAR", +
- "name": "Date", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
@@ -3128,9 +3504,17 @@ begin;
{ +
"name": "lte", +
"type": { +
- "kind": "SCALAR", +
- "name": "Date", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
@@ -3138,9 +3522,35 @@ begin;
{ +
"name": "neq", +
"type": { +
- "kind": "SCALAR", +
- "name": "Date", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "ov", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
@@ -3150,31 +3560,43 @@ begin;
}, +
{ +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Cursor", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "A date and time", +
+ "description": "An opaque string using for tracking a position in results during pagination", +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "A date wihout time information", +
"inputFields": null, +
"possibleTypes": null +
}, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "DatetimeFilter", +
+ "name": "DateFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "Boolean expression comparing fields on type \"Datetime\"", +
+ "description": "Boolean expression comparing fields on type \"Date\"", +
"inputFields": [ +
{ +
"name": "eq", +
"type": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Date", +
"ofType": null +
}, +
"description": null, +
@@ -3184,7 +3606,7 @@ begin;
"name": "gt", +
"type": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Date", +
"ofType": null +
}, +
"description": null, +
@@ -3194,7 +3616,7 @@ begin;
"name": "gte", +
"type": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Date", +
"ofType": null +
}, +
"description": null, +
@@ -3210,7 +3632,7 @@ begin;
"name": null, +
"ofType": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Date", +
"ofType": null +
} +
} +
@@ -3232,7 +3654,7 @@ begin;
"name": "lt", +
"type": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Date", +
"ofType": null +
}, +
"description": null, +
@@ -3242,7 +3664,7 @@ begin;
"name": "lte", +
"type": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Date", +
"ofType": null +
}, +
"description": null, +
@@ -3252,7 +3674,7 @@ begin;
"name": "neq", +
"type": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Date", +
"ofType": null +
}, +
"description": null, +
@@ -3261,84 +3683,72 @@ begin;
], +
"possibleTypes": null +
}, +
- { +
- "kind": "ENUM", +
- "name": "FilterIs", +
- "fields": null, +
- "enumValues": [ +
- { +
- "name": "NULL", +
- "description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
- }, +
- { +
- "name": "NOT_NULL", +
- "description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
- } +
- ], +
- "interfaces": [ +
- ], +
- "description": null, +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "SCALAR", +
- "name": "Float", +
- "fields": null, +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "A scalar floating point value up to 32 bits", +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "FloatFilter", +
+ "name": "DateListFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "Boolean expression comparing fields on type \"Float\"", +
+ "description": "Boolean expression comparing fields on type \"DateList\"", +
"inputFields": [ +
{ +
- "name": "eq", +
+ "name": "cd", +
"type": { +
- "kind": "SCALAR", +
- "name": "Float", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "gt", +
+ "name": "cs", +
"type": { +
- "kind": "SCALAR", +
- "name": "Float", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "gte", +
+ "name": "eq", +
"type": { +
- "kind": "SCALAR", +
- "name": "Float", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "in", +
+ "name": "gt", +
"type": { +
"kind": "LIST", +
"name": null, +
@@ -3347,7 +3757,7 @@ begin;
"name": null, +
"ofType": { +
"kind": "SCALAR", +
- "name": "Float", +
+ "name": "Date", +
"ofType": null +
} +
} +
@@ -3356,11 +3766,19 @@ begin;
"defaultValue": null +
}, +
{ +
- "name": "is", +
+ "name": "gte", +
"type": { +
- "kind": "ENUM", +
- "name": "FilterIs", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
@@ -3368,9 +3786,17 @@ begin;
{ +
"name": "lt", +
"type": { +
- "kind": "SCALAR", +
- "name": "Float", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
@@ -3378,9 +3804,17 @@ begin;
{ +
"name": "lte", +
"type": { +
- "kind": "SCALAR", +
- "name": "Float", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
@@ -3388,44 +3822,35 @@ begin;
{ +
"name": "neq", +
"type": { +
- "kind": "SCALAR", +
- "name": "Float", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
- } +
- ], +
- "possibleTypes": null +
- }, +
- { +
- "kind": "SCALAR", +
- "name": "ID", +
- "fields": null, +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "A globally unique identifier for a given record", +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "INPUT_OBJECT", +
- "name": "IDFilter", +
- "fields": null, +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "Boolean expression comparing fields on type \"ID\"", +
- "inputFields": [ +
+ }, +
{ +
- "name": "eq", +
+ "name": "ov", +
"type": { +
- "kind": "SCALAR", +
- "name": "ID", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Date", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
@@ -3435,31 +3860,31 @@ begin;
}, +
{ +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "Datetime", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "A scalar integer up to 32 bits", +
+ "description": "A date and time", +
"inputFields": null, +
"possibleTypes": null +
}, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "IntFilter", +
+ "name": "DatetimeFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "Boolean expression comparing fields on type \"Int\"", +
+ "description": "Boolean expression comparing fields on type \"Datetime\"", +
"inputFields": [ +
{ +
"name": "eq", +
"type": { +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "Datetime", +
"ofType": null +
}, +
"description": null, +
@@ -3469,7 +3894,7 @@ begin;
"name": "gt", +
"type": { +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "Datetime", +
"ofType": null +
}, +
"description": null, +
@@ -3479,7 +3904,7 @@ begin;
"name": "gte", +
"type": { +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "Datetime", +
"ofType": null +
}, +
"description": null, +
@@ -3495,7 +3920,7 @@ begin;
"name": null, +
"ofType": { +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "Datetime", +
"ofType": null +
} +
} +
@@ -3517,7 +3942,7 @@ begin;
"name": "lt", +
"type": { +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "Datetime", +
"ofType": null +
}, +
"description": null, +
@@ -3527,7 +3952,7 @@ begin;
"name": "lte", +
"type": { +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "Datetime", +
"ofType": null +
}, +
"description": null, +
@@ -3537,7 +3962,7 @@ begin;
"name": "neq", +
"type": { +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "Datetime", +
"ofType": null +
}, +
"description": null, +
@@ -3547,1179 +3972,647 @@ begin;
"possibleTypes": null +
}, +
{ +
- "kind": "SCALAR", +
- "name": "JSON", +
+ "kind": "INPUT_OBJECT", +
+ "name": "DatetimeListFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "A Javascript Object Notation value serialized as a string", +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "Mutation", +
- "fields": [ +
+ "description": "Boolean expression comparing fields on type \"DatetimeList\"", +
+ "inputFields": [ +
{ +
- "args": [ +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "AccountFilter", +
- "ofType": null +
- }, +
- "description": "Restricts the mutation's impact to records matching the criteria", +
- "defaultValue": null +
- }, +
- { +
- "name": "atMost", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "The maximum number of records in the collection permitted to be affected", +
- "defaultValue": "1" +
- } +
- ], +
- "name": "deleteFromAccountCollection", +
+ "name": "cd", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "OBJECT", +
- "name": "AccountDeleteResponse", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
} +
}, +
- "description": "Deletes zero or more records from the `Account` collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogFilter", +
- "ofType": null +
- }, +
- "description": "Restricts the mutation's impact to records matching the criteria", +
- "defaultValue": null +
- }, +
- { +
- "name": "atMost", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "The maximum number of records in the collection permitted to be affected", +
- "defaultValue": "1" +
- } +
- ], +
- "name": "deleteFromBlogCollection", +
+ "name": "cs", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "OBJECT", +
- "name": "BlogDeleteResponse", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
} +
}, +
- "description": "Deletes zero or more records from the `Blog` collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogPostFilter", +
- "ofType": null +
- }, +
- "description": "Restricts the mutation's impact to records matching the criteria", +
- "defaultValue": null +
- }, +
- { +
- "name": "atMost", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "The maximum number of records in the collection permitted to be affected", +
- "defaultValue": "1" +
- } +
- ], +
- "name": "deleteFromBlogPostCollection", +
+ "name": "eq", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "OBJECT", +
- "name": "BlogPostDeleteResponse", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
} +
}, +
- "description": "Deletes zero or more records from the `BlogPost` collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonFilter", +
- "ofType": null +
- }, +
- "description": "Restricts the mutation's impact to records matching the criteria", +
- "defaultValue": null +
- }, +
- { +
- "name": "atMost", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "The maximum number of records in the collection permitted to be affected", +
- "defaultValue": "1" +
- } +
- ], +
- "name": "deleteFromPersonCollection", +
+ "name": "gt", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "OBJECT", +
- "name": "PersonDeleteResponse", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
} +
}, +
- "description": "Deletes zero or more records from the `Person` collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "objects", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "AccountInsertInput", +
- "ofType": null +
- } +
- } +
- } +
- }, +
- "description": null, +
- "defaultValue": null +
- } +
- ], +
- "name": "insertIntoAccountCollection", +
+ "name": "gte", +
"type": { +
- "kind": "OBJECT", +
- "name": "AccountInsertResponse", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
+ } +
}, +
- "description": "Adds one or more `Account` records to the collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "objects", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogInsertInput", +
- "ofType": null +
- } +
- } +
- } +
- }, +
- "description": null, +
- "defaultValue": null +
- } +
- ], +
- "name": "insertIntoBlogCollection", +
+ "name": "lt", +
"type": { +
- "kind": "OBJECT", +
- "name": "BlogInsertResponse", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
+ } +
}, +
- "description": "Adds one or more `Blog` records to the collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "objects", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogPostInsertInput", +
- "ofType": null +
- } +
- } +
- } +
- }, +
- "description": null, +
- "defaultValue": null +
- } +
- ], +
- "name": "insertIntoBlogPostCollection", +
+ "name": "lte", +
"type": { +
- "kind": "OBJECT", +
- "name": "BlogPostInsertResponse", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
+ } +
}, +
- "description": "Adds one or more `BlogPost` records to the collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "objects", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonInsertInput", +
- "ofType": null +
- } +
- } +
- } +
- }, +
- "description": null, +
- "defaultValue": null +
- } +
- ], +
- "name": "insertIntoPersonCollection", +
+ "name": "neq", +
"type": { +
- "kind": "OBJECT", +
- "name": "PersonInsertResponse", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
+ } +
}, +
- "description": "Adds one or more `Person` records to the collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "set", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "AccountUpdateInput", +
- "ofType": null +
- } +
- }, +
- "description": "Fields that are set will be updated for all records matching the `filter`", +
- "defaultValue": null +
- }, +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "AccountFilter", +
- "ofType": null +
- }, +
- "description": "Restricts the mutation's impact to records matching the criteria", +
- "defaultValue": null +
- }, +
- { +
- "name": "atMost", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "The maximum number of records in the collection permitted to be affected", +
- "defaultValue": "1" +
- } +
- ], +
- "name": "updateAccountCollection", +
+ "name": "ov", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "OBJECT", +
- "name": "AccountUpdateResponse", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ } +
} +
}, +
- "description": "Updates zero or more records in the `Account` collection", +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "ENUM", +
+ "name": "FilterIs", +
+ "fields": null, +
+ "enumValues": [ +
+ { +
+ "name": "NULL", +
+ "description": null, +
"isDeprecated": false, +
"deprecationReason": null +
}, +
{ +
- "args": [ +
- { +
- "name": "set", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogUpdateInput", +
- "ofType": null +
- } +
- }, +
- "description": "Fields that are set will be updated for all records matching the `filter`", +
- "defaultValue": null +
- }, +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogFilter", +
- "ofType": null +
- }, +
- "description": "Restricts the mutation's impact to records matching the criteria", +
- "defaultValue": null +
- }, +
- { +
- "name": "atMost", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "The maximum number of records in the collection permitted to be affected", +
- "defaultValue": "1" +
- } +
- ], +
- "name": "updateBlogCollection", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "OBJECT", +
- "name": "BlogUpdateResponse", +
- "ofType": null +
- } +
- }, +
- "description": "Updates zero or more records in the `Blog` collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
- }, +
- { +
- "args": [ +
- { +
- "name": "set", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogPostUpdateInput", +
- "ofType": null +
- } +
- }, +
- "description": "Fields that are set will be updated for all records matching the `filter`", +
- "defaultValue": null +
- }, +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogPostFilter", +
- "ofType": null +
- }, +
- "description": "Restricts the mutation's impact to records matching the criteria", +
- "defaultValue": null +
- }, +
- { +
- "name": "atMost", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "The maximum number of records in the collection permitted to be affected", +
- "defaultValue": "1" +
- } +
- ], +
- "name": "updateBlogPostCollection", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "OBJECT", +
- "name": "BlogPostUpdateResponse", +
- "ofType": null +
- } +
- }, +
- "description": "Updates zero or more records in the `BlogPost` collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
- }, +
- { +
- "args": [ +
- { +
- "name": "set", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonUpdateInput", +
- "ofType": null +
- } +
- }, +
- "description": "Fields that are set will be updated for all records matching the `filter`", +
- "defaultValue": null +
- }, +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonFilter", +
- "ofType": null +
- }, +
- "description": "Restricts the mutation's impact to records matching the criteria", +
- "defaultValue": null +
- }, +
- { +
- "name": "atMost", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "The maximum number of records in the collection permitted to be affected", +
- "defaultValue": "1" +
- } +
- ], +
- "name": "updatePersonCollection", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "OBJECT", +
- "name": "PersonUpdateResponse", +
- "ofType": null +
- } +
- }, +
- "description": "Updates zero or more records in the `Person` collection", +
- "isDeprecated": false, +
- "deprecationReason": null +
- } +
- ], +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "The root type for creating and mutating data", +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "INTERFACE", +
- "name": "Node", +
- "fields": [ +
- { +
- "args": [ +
- ], +
- "name": "nodeId", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "ID", +
- "ofType": null +
- } +
- }, +
- "description": "Retrieves a record by `ID`", +
+ "name": "NOT_NULL", +
+ "description": null, +
"isDeprecated": false, +
"deprecationReason": null +
} +
], +
- "enumValues": [ +
- ], +
"interfaces": [ +
], +
"description": null, +
"inputFields": null, +
- "possibleTypes": [ +
- { +
- "kind": "OBJECT", +
- "name": "Account", +
- "ofType": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "Blog", +
- "ofType": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "BlogPost", +
- "ofType": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "Person", +
- "ofType": null +
- } +
- ] +
+ "possibleTypes": null +
}, +
{ +
"kind": "SCALAR", +
- "name": "Opaque", +
+ "name": "Float", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "Any type not handled by the type system", +
+ "description": "A scalar floating point value up to 32 bits", +
"inputFields": null, +
"possibleTypes": null +
}, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "OpaqueFilter", +
+ "name": "FloatFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "Boolean expression comparing fields on type \"Opaque\"", +
+ "description": "Boolean expression comparing fields on type \"Float\"", +
"inputFields": [ +
{ +
"name": "eq", +
"type": { +
"kind": "SCALAR", +
- "name": "Opaque", +
+ "name": "Float", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "is", +
+ "name": "gt", +
"type": { +
- "kind": "ENUM", +
- "name": "FilterIs", +
+ "kind": "SCALAR", +
+ "name": "Float", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
- } +
- ], +
- "possibleTypes": null +
- }, +
- { +
- "kind": "ENUM", +
- "name": "OrderByDirection", +
- "fields": null, +
- "enumValues": [ +
- { +
- "name": "AscNullsFirst", +
- "description": "Ascending order, nulls first", +
- "isDeprecated": false, +
- "deprecationReason": null +
- }, +
- { +
- "name": "AscNullsLast", +
- "description": "Ascending order, nulls last", +
- "isDeprecated": false, +
- "deprecationReason": null +
}, +
{ +
- "name": "DescNullsFirst", +
- "description": "Descending order, nulls first", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "name": "gte", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "name": "DescNullsLast", +
- "description": "Descending order, nulls last", +
- "isDeprecated": false, +
- "deprecationReason": null +
- } +
- ], +
- "interfaces": [ +
- ], +
- "description": "Defines a per-field sorting order", +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "PageInfo", +
- "fields": [ +
+ "name": "in", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
{ +
- "args": [ +
- ], +
- "name": "endCursor", +
+ "name": "is", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
+ "kind": "ENUM", +
+ "name": "FilterIs", +
"ofType": null +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "hasNextPage", +
+ "name": "lt", +
"type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Boolean", +
- "ofType": null +
- } +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "hasPreviousPage", +
+ "name": "lte", +
"type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Boolean", +
- "ofType": null +
- } +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "startCursor", +
+ "name": "neq", +
"type": { +
"kind": "SCALAR", +
- "name": "String", +
+ "name": "Float", +
"ofType": null +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
} +
], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "FloatListFilter", +
+ "fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": null, +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "Person", +
- "fields": [ +
+ "description": "Boolean expression comparing fields on type \"FloatList\"", +
+ "inputFields": [ +
{ +
- "args": [ +
- ], +
- "name": "nodeId", +
+ "name": "cd", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "SCALAR", +
- "name": "ID", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ } +
} +
}, +
- "description": "Globally Unique Record Identifier", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "id", +
+ "name": "cs", +
"type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "email", +
+ "name": "eq", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "encryptedPassword", +
+ "name": "gt", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "createdAt", +
+ "name": "gte", +
"type": { +
- "kind": "SCALAR", +
- "name": "Datetime", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "updatedAt", +
+ "name": "lt", +
"type": { +
- "kind": "SCALAR", +
- "name": "Datetime", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- { +
- "name": "first", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Query the first `n` records in the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "last", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Query the last `n` records in the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "before", +
- "type": { +
+ "name": "lte", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
"kind": "SCALAR", +
- "name": "Cursor", +
+ "name": "Float", +
"ofType": null +
- }, +
- "description": "Query values in the collection before the provided cursor", +
- "defaultValue": null +
- }, +
- { +
- "name": "after", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Cursor", +
- "ofType": null +
- }, +
- "description": "Query values in the collection after the provided cursor", +
- "defaultValue": null +
- }, +
- { +
- "name": "offset", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
- "defaultValue": null +
- }, +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogFilter", +
- "ofType": null +
- }, +
- "description": "Filters to apply to the results set when querying from the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "orderBy", +
- "type": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogOrderBy", +
- "ofType": null +
- } +
- } +
- }, +
- "description": "Sort order to apply to the collection", +
- "defaultValue": null +
+ } +
} +
- ], +
- "name": "blogs", +
- "type": { +
- "kind": "OBJECT", +
- "name": "BlogConnection", +
- "ofType": null +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
- } +
- ], +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- { +
- "kind": "INTERFACE", +
- "name": "Node", +
- "ofType": null +
- } +
- ], +
- "description": null, +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "PersonConnection", +
- "fields": [ +
+ "defaultValue": null +
+ }, +
{ +
- "args": [ +
- ], +
- "name": "edges", +
+ "name": "neq", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "LIST", +
+ "kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "OBJECT", +
- "name": "PersonEdge", +
- "ofType": null +
- } +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
} +
} +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "pageInfo", +
+ "name": "ov", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "OBJECT", +
- "name": "PageInfo", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Float", +
+ "ofType": null +
+ } +
} +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
} +
], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": null, +
+ "description": "A globally unique identifier for a given record", +
"inputFields": null, +
"possibleTypes": null +
}, +
{ +
- "kind": "OBJECT", +
- "name": "PersonDeleteResponse", +
- "fields": [ +
- { +
- "args": [ +
- ], +
- "name": "affectedCount", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "Count of the records impacted by the mutation", +
- "isDeprecated": false, +
- "deprecationReason": null +
- }, +
- { +
- "args": [ +
- ], +
- "name": "records", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "OBJECT", +
- "name": "Person", +
- "ofType": null +
- } +
- } +
- } +
- }, +
- "description": "Array of records impacted by the mutation", +
- "isDeprecated": false, +
- "deprecationReason": null +
- } +
- ], +
+ "kind": "INPUT_OBJECT", +
+ "name": "IDFilter", +
+ "fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": null, +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "PersonEdge", +
- "fields": [ +
- { +
- "args": [ +
- ], +
- "name": "cursor", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
- } +
- }, +
- "description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
- }, +
+ "description": "Boolean expression comparing fields on type \"ID\"", +
+ "inputFields": [ +
{ +
- "args": [ +
- ], +
- "name": "node", +
+ "name": "eq", +
"type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "OBJECT", +
- "name": "Person", +
- "ofType": null +
- } +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
}, +
"description": null, +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "defaultValue": null +
} +
], +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": null, +
- "inputFields": null, +
"possibleTypes": null +
}, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "PersonFilter", +
+ "name": "IDListFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": null, +
+ "description": "Boolean expression comparing fields on type \"IDList\"", +
"inputFields": [ +
{ +
- "name": "id", +
+ "name": "cd", +
"type": { +
- "kind": "INPUT_OBJECT", +
- "name": "IntFilter", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "email", +
+ "name": "cs", +
"type": { +
- "kind": "INPUT_OBJECT", +
- "name": "StringFilter", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "encryptedPassword", +
+ "name": "eq", +
"type": { +
- "kind": "INPUT_OBJECT", +
- "name": "StringFilter", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "createdAt", +
+ "name": "gt", +
"type": { +
- "kind": "INPUT_OBJECT", +
- "name": "DatetimeFilter", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "updatedAt", +
+ "name": "gte", +
"type": { +
- "kind": "INPUT_OBJECT", +
- "name": "DatetimeFilter", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "nodeId", +
+ "name": "lt", +
"type": { +
- "kind": "INPUT_OBJECT", +
- "name": "IDFilter", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "and", +
+ "name": "lte", +
"type": { +
"kind": "LIST", +
"name": null, +
@@ -4727,17 +4620,17 @@ begin;
"kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonFilter", +
+ "kind": "SCALAR", +
+ "name": "ID", +
"ofType": null +
} +
} +
}, +
- "description": "Returns true only if all its inner filters are true, otherwise returns false", +
+ "description": null, +
"defaultValue": null +
}, +
{ +
- "name": "or", +
+ "name": "neq", +
"type": { +
"kind": "LIST", +
"name": null, +
@@ -4745,40 +4638,60 @@ begin;
"kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonFilter", +
+ "kind": "SCALAR", +
+ "name": "ID", +
"ofType": null +
} +
} +
}, +
- "description": "Returns true if at least one of its inner filters is true, otherwise returns false", +
+ "description": null, +
"defaultValue": null +
}, +
{ +
- "name": "not", +
+ "name": "ov", +
"type": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonFilter", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ } +
}, +
- "description": "Negates a filter", +
+ "description": null, +
"defaultValue": null +
} +
], +
"possibleTypes": null +
}, +
+ { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "A scalar integer up to 32 bits", +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "PersonInsertInput", +
+ "name": "IntFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": null, +
+ "description": "Boolean expression comparing fields on type \"Int\"", +
"inputFields": [ +
{ +
- "name": "id", +
+ "name": "eq", +
"type": { +
"kind": "SCALAR", +
"name": "Int", +
@@ -4788,158 +4701,78 @@ begin;
"defaultValue": null +
}, +
{ +
- "name": "email", +
- "type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
- }, +
- "description": null, +
- "defaultValue": null +
- }, +
- { +
- "name": "encryptedPassword", +
- "type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
- }, +
- "description": null, +
- "defaultValue": null +
- }, +
- { +
- "name": "createdAt", +
+ "name": "gt", +
"type": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Int", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "updatedAt", +
+ "name": "gte", +
"type": { +
"kind": "SCALAR", +
- "name": "Datetime", +
+ "name": "Int", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
- } +
- ], +
- "possibleTypes": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "PersonInsertResponse", +
- "fields": [ +
- { +
- "args": [ +
- ], +
- "name": "affectedCount", +
- "type": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- } +
- }, +
- "description": "Count of the records impacted by the mutation", +
- "isDeprecated": false, +
- "deprecationReason": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "records", +
+ "name": "in", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "LIST", +
+ "kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "OBJECT", +
- "name": "Person", +
- "ofType": null +
- } +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
} +
} +
}, +
- "description": "Array of records impacted by the mutation", +
- "isDeprecated": false, +
- "deprecationReason": null +
- } +
- ], +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": null, +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonOrderBy", +
- "fields": null, +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": null, +
- "inputFields": [ +
- { +
- "name": "id", +
- "type": { +
- "kind": "ENUM", +
- "name": "OrderByDirection", +
- "ofType": null +
- }, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "email", +
+ "name": "is", +
"type": { +
"kind": "ENUM", +
- "name": "OrderByDirection", +
+ "name": "FilterIs", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "encryptedPassword", +
+ "name": "lt", +
"type": { +
- "kind": "ENUM", +
- "name": "OrderByDirection", +
+ "kind": "SCALAR", +
+ "name": "Int", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "createdAt", +
+ "name": "lte", +
"type": { +
- "kind": "ENUM", +
- "name": "OrderByDirection", +
+ "kind": "SCALAR", +
+ "name": "Int", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "updatedAt", +
+ "name": "neq", +
"type": { +
- "kind": "ENUM", +
- "name": "OrderByDirection", +
+ "kind": "SCALAR", +
+ "name": "Int", +
"ofType": null +
}, +
"description": null, +
@@ -4950,178 +4783,197 @@ begin;
}, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "PersonUpdateInput", +
+ "name": "IntListFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": null, +
+ "description": "Boolean expression comparing fields on type \"IntList\"", +
"inputFields": [ +
{ +
- "name": "id", +
+ "name": "cd", +
"type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "email", +
+ "name": "cs", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
- }, +
- "description": null, +
- "defaultValue": null +
- }, +
- { +
- "name": "encryptedPassword", +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "eq", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "createdAt", +
+ "name": "gt", +
"type": { +
- "kind": "SCALAR", +
- "name": "Datetime", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "updatedAt", +
+ "name": "gte", +
"type": { +
- "kind": "SCALAR", +
- "name": "Datetime", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
- } +
- ], +
- "possibleTypes": null +
- }, +
- { +
- "kind": "OBJECT", +
- "name": "PersonUpdateResponse", +
- "fields": [ +
+ }, +
{ +
- "args": [ +
- ], +
- "name": "affectedCount", +
+ "name": "lt", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
} +
}, +
- "description": "Count of the records impacted by the mutation", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
}, +
{ +
- "args": [ +
- ], +
- "name": "records", +
+ "name": "lte", +
"type": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "LIST", +
+ "kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "OBJECT", +
- "name": "Person", +
- "ofType": null +
- } +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
} +
} +
}, +
- "description": "Array of records impacted by the mutation", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "neq", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "ov", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
} +
], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "SCALAR", +
+ "name": "JSON", +
+ "fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": null, +
+ "description": "A Javascript Object Notation value serialized as a string", +
"inputFields": null, +
"possibleTypes": null +
}, +
{ +
"kind": "OBJECT", +
- "name": "Query", +
+ "name": "Mutation", +
"fields": [ +
{ +
"args": [ +
- { +
- "name": "first", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Query the first `n` records in the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "last", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Query the last `n` records in the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "before", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Cursor", +
- "ofType": null +
- }, +
- "description": "Query values in the collection before the provided cursor", +
- "defaultValue": null +
- }, +
- { +
- "name": "after", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Cursor", +
- "ofType": null +
- }, +
- "description": "Query values in the collection after the provided cursor", +
- "defaultValue": null +
- }, +
- { +
- "name": "offset", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
- "defaultValue": null +
- }, +
{ +
"name": "filter", +
"type": { +
@@ -5129,374 +4981,2270 @@ begin;
"name": "AccountFilter", +
"ofType": null +
}, +
- "description": "Filters to apply to the results set when querying from the collection", +
+ "description": "Restricts the mutation's impact to records matching the criteria", +
"defaultValue": null +
}, +
{ +
- "name": "orderBy", +
+ "name": "atMost", +
"type": { +
- "kind": "LIST", +
+ "kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "AccountOrderBy", +
- "ofType": null +
- } +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
} +
}, +
- "description": "Sort order to apply to the collection", +
- "defaultValue": null +
+ "description": "The maximum number of records in the collection permitted to be affected", +
+ "defaultValue": "1" +
} +
], +
- "name": "accountCollection", +
+ "name": "deleteFromAccountCollection", +
"type": { +
- "kind": "OBJECT", +
- "name": "AccountConnection", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "AccountDeleteResponse", +
+ "ofType": null +
+ } +
}, +
- "description": "A pagable collection of type `Account`", +
+ "description": "Deletes zero or more records from the `Account` collection", +
"isDeprecated": false, +
"deprecationReason": null +
}, +
{ +
"args": [ +
{ +
- "name": "first", +
+ "name": "filter", +
"type": { +
- "kind": "SCALAR", +
- "name": "Int", +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogFilter", +
"ofType": null +
}, +
- "description": "Query the first `n` records in the collection", +
+ "description": "Restricts the mutation's impact to records matching the criteria", +
"defaultValue": null +
}, +
{ +
- "name": "last", +
+ "name": "atMost", +
"type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
}, +
- "description": "Query the last `n` records in the collection", +
- "defaultValue": null +
- }, +
+ "description": "The maximum number of records in the collection permitted to be affected", +
+ "defaultValue": "1" +
+ } +
+ ], +
+ "name": "deleteFromBlogCollection", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "BlogDeleteResponse", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Deletes zero or more records from the `Blog` collection", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
{ +
- "name": "before", +
+ "name": "filter", +
"type": { +
- "kind": "SCALAR", +
- "name": "Cursor", +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogPostFilter", +
"ofType": null +
}, +
- "description": "Query values in the collection before the provided cursor", +
+ "description": "Restricts the mutation's impact to records matching the criteria", +
"defaultValue": null +
}, +
{ +
- "name": "after", +
+ "name": "atMost", +
"type": { +
- "kind": "SCALAR", +
- "name": "Cursor", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
}, +
- "description": "Query values in the collection after the provided cursor", +
- "defaultValue": null +
- }, +
+ "description": "The maximum number of records in the collection permitted to be affected", +
+ "defaultValue": "1" +
+ } +
+ ], +
+ "name": "deleteFromBlogPostCollection", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "BlogPostDeleteResponse", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Deletes zero or more records from the `BlogPost` collection", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
{ +
- "name": "offset", +
+ "name": "filter", +
"type": { +
- "kind": "SCALAR", +
- "name": "Int", +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonFilter", +
"ofType": null +
}, +
- "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
+ "description": "Restricts the mutation's impact to records matching the criteria", +
"defaultValue": null +
}, +
{ +
- "name": "filter", +
+ "name": "atMost", +
"type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogFilter", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
}, +
- "description": "Filters to apply to the results set when querying from the collection", +
- "defaultValue": null +
- }, +
+ "description": "The maximum number of records in the collection permitted to be affected", +
+ "defaultValue": "1" +
+ } +
+ ], +
+ "name": "deleteFromPersonCollection", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "PersonDeleteResponse", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Deletes zero or more records from the `Person` collection", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
{ +
- "name": "orderBy", +
+ "name": "objects", +
"type": { +
- "kind": "LIST", +
+ "kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogOrderBy", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "AccountInsertInput", +
+ "ofType": null +
+ } +
} +
} +
}, +
- "description": "Sort order to apply to the collection", +
+ "description": null, +
"defaultValue": null +
} +
], +
- "name": "blogCollection", +
+ "name": "insertIntoAccountCollection", +
"type": { +
"kind": "OBJECT", +
- "name": "BlogConnection", +
+ "name": "AccountInsertResponse", +
"ofType": null +
}, +
- "description": "A pagable collection of type `Blog`", +
+ "description": "Adds one or more `Account` records to the collection", +
"isDeprecated": false, +
"deprecationReason": null +
}, +
{ +
"args": [ +
{ +
- "name": "first", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Query the first `n` records in the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "last", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Query the last `n` records in the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "before", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Cursor", +
- "ofType": null +
- }, +
- "description": "Query values in the collection before the provided cursor", +
- "defaultValue": null +
- }, +
- { +
- "name": "after", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Cursor", +
- "ofType": null +
- }, +
- "description": "Query values in the collection after the provided cursor", +
- "defaultValue": null +
- }, +
- { +
- "name": "offset", +
- "type": { +
- "kind": "SCALAR", +
- "name": "Int", +
- "ofType": null +
- }, +
- "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
- "defaultValue": null +
- }, +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogPostFilter", +
- "ofType": null +
- }, +
- "description": "Filters to apply to the results set when querying from the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "orderBy", +
+ "name": "objects", +
"type": { +
- "kind": "LIST", +
+ "kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "NON_NULL", +
+ "kind": "LIST", +
"name": null, +
"ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "BlogPostOrderBy", +
- "ofType": null +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogInsertInput", +
+ "ofType": null +
+ } +
} +
} +
}, +
- "description": "Sort order to apply to the collection", +
+ "description": null, +
"defaultValue": null +
} +
], +
- "name": "blogPostCollection", +
+ "name": "insertIntoBlogCollection", +
"type": { +
"kind": "OBJECT", +
- "name": "BlogPostConnection", +
+ "name": "BlogInsertResponse", +
"ofType": null +
}, +
- "description": "A pagable collection of type `BlogPost`", +
+ "description": "Adds one or more `Blog` records to the collection", +
"isDeprecated": false, +
"deprecationReason": null +
}, +
{ +
"args": [ +
{ +
- "name": "nodeId", +
+ "name": "objects", +
"type": { +
"kind": "NON_NULL", +
"name": null, +
"ofType": { +
- "kind": "SCALAR", +
- "name": "ID", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogPostInsertInput", +
+ "ofType": null +
+ } +
+ } +
} +
}, +
- "description": "The record's `ID`", +
+ "description": null, +
"defaultValue": null +
} +
], +
- "name": "node", +
+ "name": "insertIntoBlogPostCollection", +
"type": { +
- "kind": "INTERFACE", +
- "name": "Node", +
+ "kind": "OBJECT", +
+ "name": "BlogPostInsertResponse", +
"ofType": null +
}, +
- "description": "Retrieve a record by its `ID`", +
+ "description": "Adds one or more `BlogPost` records to the collection", +
"isDeprecated": false, +
"deprecationReason": null +
}, +
{ +
"args": [ +
{ +
- "name": "first", +
+ "name": "objects", +
"type": { +
- "kind": "SCALAR", +
- "name": "Int", +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonInsertInput", +
+ "ofType": null +
+ } +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "name": "insertIntoPersonCollection", +
+ "type": { +
+ "kind": "OBJECT", +
+ "name": "PersonInsertResponse", +
+ "ofType": null +
+ }, +
+ "description": "Adds one or more `Person` records to the collection", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "set", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "AccountUpdateInput", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Fields that are set will be updated for all records matching the `filter`", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "AccountFilter", +
"ofType": null +
}, +
- "description": "Query the first `n` records in the collection", +
+ "description": "Restricts the mutation's impact to records matching the criteria", +
"defaultValue": null +
}, +
{ +
- "name": "last", +
+ "name": "atMost", +
"type": { +
- "kind": "SCALAR", +
- "name": "Int", +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "The maximum number of records in the collection permitted to be affected", +
+ "defaultValue": "1" +
+ } +
+ ], +
+ "name": "updateAccountCollection", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "AccountUpdateResponse", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Updates zero or more records in the `Account` collection", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "set", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogUpdateInput", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Fields that are set will be updated for all records matching the `filter`", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogFilter", +
"ofType": null +
}, +
- "description": "Query the last `n` records in the collection", +
+ "description": "Restricts the mutation's impact to records matching the criteria", +
"defaultValue": null +
}, +
{ +
- "name": "before", +
+ "name": "atMost", +
"type": { +
- "kind": "SCALAR", +
- "name": "Cursor", +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "The maximum number of records in the collection permitted to be affected", +
+ "defaultValue": "1" +
+ } +
+ ], +
+ "name": "updateBlogCollection", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "BlogUpdateResponse", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Updates zero or more records in the `Blog` collection", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "set", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogPostUpdateInput", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Fields that are set will be updated for all records matching the `filter`", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogPostFilter", +
"ofType": null +
}, +
- "description": "Query values in the collection before the provided cursor", +
+ "description": "Restricts the mutation's impact to records matching the criteria", +
"defaultValue": null +
}, +
{ +
- "name": "after", +
+ "name": "atMost", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "The maximum number of records in the collection permitted to be affected", +
+ "defaultValue": "1" +
+ } +
+ ], +
+ "name": "updateBlogPostCollection", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "BlogPostUpdateResponse", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Updates zero or more records in the `BlogPost` collection", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "set", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonUpdateInput", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Fields that are set will be updated for all records matching the `filter`", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonFilter", +
+ "ofType": null +
+ }, +
+ "description": "Restricts the mutation's impact to records matching the criteria", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "atMost", +
"type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "The maximum number of records in the collection permitted to be affected", +
+ "defaultValue": "1" +
+ } +
+ ], +
+ "name": "updatePersonCollection", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "PersonUpdateResponse", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Updates zero or more records in the `Person` collection", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "The root type for creating and mutating data", +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INTERFACE", +
+ "name": "Node", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "nodeId", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Retrieves a record by `ID`", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": null, +
+ "possibleTypes": [ +
+ { +
+ "kind": "OBJECT", +
+ "name": "Account", +
+ "ofType": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "Blog", +
+ "ofType": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "BlogPost", +
+ "ofType": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "Person", +
+ "ofType": null +
+ } +
+ ] +
+ }, +
+ { +
+ "kind": "SCALAR", +
+ "name": "Opaque", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Any type not handled by the type system", +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "OpaqueFilter", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Boolean expression comparing fields on type \"Opaque\"", +
+ "inputFields": [ +
+ { +
+ "name": "eq", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Opaque", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "is", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "FilterIs", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "ENUM", +
+ "name": "OrderByDirection", +
+ "fields": null, +
+ "enumValues": [ +
+ { +
+ "name": "AscNullsFirst", +
+ "description": "Ascending order, nulls first", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "name": "AscNullsLast", +
+ "description": "Ascending order, nulls last", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "name": "DescNullsFirst", +
+ "description": "Descending order, nulls first", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "name": "DescNullsLast", +
+ "description": "Descending order, nulls last", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Defines a per-field sorting order", +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "PageInfo", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "endCursor", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "hasNextPage", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "hasPreviousPage", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Boolean", +
+ "ofType": null +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "startCursor", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "Person", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "nodeId", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Globally Unique Record Identifier", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "id", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "email", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "encryptedPassword", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "createdAt", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "updatedAt", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "first", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the first `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "last", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the last `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "before", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection before the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "after", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection after the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "offset", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogFilter", +
+ "ofType": null +
+ }, +
+ "description": "Filters to apply to the results set when querying from the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "orderBy", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogOrderBy", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": "Sort order to apply to the collection", +
+ "defaultValue": null +
+ } +
+ ], +
+ "name": "blogs", +
+ "type": { +
+ "kind": "OBJECT", +
+ "name": "BlogConnection", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ { +
+ "kind": "INTERFACE", +
+ "name": "Node", +
+ "ofType": null +
+ } +
+ ], +
+ "description": null, +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "PersonConnection", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "edges", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "PersonEdge", +
+ "ofType": null +
+ } +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "pageInfo", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "PageInfo", +
+ "ofType": null +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "PersonDeleteResponse", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "affectedCount", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Count of the records impacted by the mutation", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "records", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "Person", +
+ "ofType": null +
+ } +
+ } +
+ } +
+ }, +
+ "description": "Array of records impacted by the mutation", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "PersonEdge", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "cursor", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "node", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "Person", +
+ "ofType": null +
+ } +
+ }, +
+ "description": null, +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonFilter", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": [ +
+ { +
+ "name": "id", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "IntFilter", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "email", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringFilter", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "encryptedPassword", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringFilter", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "createdAt", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "DatetimeFilter", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "updatedAt", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "DatetimeFilter", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "nodeId", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "IDFilter", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "and", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonFilter", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": "Returns true only if all its inner filters are true, otherwise returns false", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "or", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonFilter", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": "Returns true if at least one of its inner filters is true, otherwise returns false", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "not", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonFilter", +
+ "ofType": null +
+ }, +
+ "description": "Negates a filter", +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonInsertInput", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": [ +
+ { +
+ "name": "id", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "email", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "encryptedPassword", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "createdAt", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "updatedAt", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "PersonInsertResponse", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "affectedCount", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Count of the records impacted by the mutation", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "records", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "Person", +
+ "ofType": null +
+ } +
+ } +
+ } +
+ }, +
+ "description": "Array of records impacted by the mutation", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonOrderBy", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": [ +
+ { +
+ "name": "id", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "OrderByDirection", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "email", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "OrderByDirection", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "encryptedPassword", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "OrderByDirection", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "createdAt", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "OrderByDirection", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "updatedAt", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "OrderByDirection", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonUpdateInput", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": [ +
+ { +
+ "name": "id", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "email", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "encryptedPassword", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "createdAt", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "updatedAt", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Datetime", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "PersonUpdateResponse", +
+ "fields": [ +
+ { +
+ "args": [ +
+ ], +
+ "name": "affectedCount", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "Count of the records impacted by the mutation", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ ], +
+ "name": "records", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "OBJECT", +
+ "name": "Person", +
+ "ofType": null +
+ } +
+ } +
+ } +
+ }, +
+ "description": "Array of records impacted by the mutation", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": null, +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "OBJECT", +
+ "name": "Query", +
+ "fields": [ +
+ { +
+ "args": [ +
+ { +
+ "name": "first", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the first `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "last", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the last `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "before", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection before the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "after", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection after the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "offset", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "AccountFilter", +
+ "ofType": null +
+ }, +
+ "description": "Filters to apply to the results set when querying from the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "orderBy", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "AccountOrderBy", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": "Sort order to apply to the collection", +
+ "defaultValue": null +
+ } +
+ ], +
+ "name": "accountCollection", +
+ "type": { +
+ "kind": "OBJECT", +
+ "name": "AccountConnection", +
+ "ofType": null +
+ }, +
+ "description": "A pagable collection of type `Account`", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "first", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the first `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "last", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the last `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "before", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection before the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "after", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection after the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "offset", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogFilter", +
+ "ofType": null +
+ }, +
+ "description": "Filters to apply to the results set when querying from the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "orderBy", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogOrderBy", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": "Sort order to apply to the collection", +
+ "defaultValue": null +
+ } +
+ ], +
+ "name": "blogCollection", +
+ "type": { +
+ "kind": "OBJECT", +
+ "name": "BlogConnection", +
+ "ofType": null +
+ }, +
+ "description": "A pagable collection of type `Blog`", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "first", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the first `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "last", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the last `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "before", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection before the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "after", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection after the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "offset", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogPostFilter", +
+ "ofType": null +
+ }, +
+ "description": "Filters to apply to the results set when querying from the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "orderBy", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BlogPostOrderBy", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": "Sort order to apply to the collection", +
+ "defaultValue": null +
+ } +
+ ], +
+ "name": "blogPostCollection", +
+ "type": { +
+ "kind": "OBJECT", +
+ "name": "BlogPostConnection", +
+ "ofType": null +
+ }, +
+ "description": "A pagable collection of type `BlogPost`", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "nodeId", +
+ "type": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "ID", +
+ "ofType": null +
+ } +
+ }, +
+ "description": "The record's `ID`", +
+ "defaultValue": null +
+ } +
+ ], +
+ "name": "node", +
+ "type": { +
+ "kind": "INTERFACE", +
+ "name": "Node", +
+ "ofType": null +
+ }, +
+ "description": "Retrieve a record by its `ID`", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ }, +
+ { +
+ "args": [ +
+ { +
+ "name": "first", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the first `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "last", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Query the last `n` records in the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "before", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection before the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "after", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Cursor", +
+ "ofType": null +
+ }, +
+ "description": "Query values in the collection after the provided cursor", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "offset", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Int", +
+ "ofType": null +
+ }, +
+ "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "filter", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonFilter", +
+ "ofType": null +
+ }, +
+ "description": "Filters to apply to the results set when querying from the collection", +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "orderBy", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "PersonOrderBy", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": "Sort order to apply to the collection", +
+ "defaultValue": null +
+ } +
+ ], +
+ "name": "personCollection", +
+ "type": { +
+ "kind": "OBJECT", +
+ "name": "PersonConnection", +
+ "ofType": null +
+ }, +
+ "description": "A pagable collection of type `Person`", +
+ "isDeprecated": false, +
+ "deprecationReason": null +
+ } +
+ ], +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "The root type for querying data", +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "A string", +
+ "inputFields": null, +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringFilter", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Boolean expression comparing fields on type \"String\"", +
+ "inputFields": [ +
+ { +
+ "name": "eq", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "gt", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "gte", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "ilike", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "in", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "iregex", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "is", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "FilterIs", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "like", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lt", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lte", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "neq", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "regex", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "startsWith", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringListFilter", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Boolean expression comparing fields on type \"StringList\"", +
+ "inputFields": [ +
+ { +
+ "name": "cd", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "cs", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "eq", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "gt", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "gte", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lt", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
"kind": "SCALAR", +
- "name": "Cursor", +
+ "name": "String", +
"ofType": null +
- }, +
- "description": "Query values in the collection after the provided cursor", +
- "defaultValue": null +
- }, +
- { +
- "name": "offset", +
- "type": { +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lte", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
"kind": "SCALAR", +
- "name": "Int", +
+ "name": "String", +
"ofType": null +
- }, +
- "description": "Skip n values from the after cursor. Alternative to cursor pagination. Backward pagination not supported.", +
- "defaultValue": null +
- }, +
- { +
- "name": "filter", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonFilter", +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "neq", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
"ofType": null +
- }, +
- "description": "Filters to apply to the results set when querying from the collection", +
- "defaultValue": null +
- }, +
- { +
- "name": "orderBy", +
- "type": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null, +
- "ofType": { +
- "kind": "INPUT_OBJECT", +
- "name": "PersonOrderBy", +
- "ofType": null +
- } +
- } +
- }, +
- "description": "Sort order to apply to the collection", +
- "defaultValue": null +
+ } +
} +
- ], +
- "name": "personCollection", +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "ov", +
"type": { +
- "kind": "OBJECT", +
- "name": "PersonConnection", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "String", +
+ "ofType": null +
+ } +
+ } +
}, +
- "description": "A pagable collection of type `Person`", +
- "isDeprecated": false, +
- "deprecationReason": null +
+ "description": null, +
+ "defaultValue": null +
} +
], +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "The root type for querying data", +
- "inputFields": null, +
"possibleTypes": null +
}, +
{ +
"kind": "SCALAR", +
- "name": "String", +
+ "name": "Time", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "A string", +
+ "description": "A time without date information", +
"inputFields": null, +
"possibleTypes": null +
}, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "StringFilter", +
+ "name": "TimeFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "Boolean expression comparing fields on type \"String\"", +
+ "description": "Boolean expression comparing fields on type \"Time\"", +
"inputFields": [ +
{ +
"name": "eq", +
"type": { +
"kind": "SCALAR", +
- "name": "String", +
+ "name": "Time", +
"ofType": null +
}, +
"description": null, +
@@ -5506,7 +7254,7 @@ begin;
"name": "gt", +
"type": { +
"kind": "SCALAR", +
- "name": "String", +
+ "name": "Time", +
"ofType": null +
}, +
"description": null, +
@@ -5516,24 +7264,85 @@ begin;
"name": "gte", +
"type": { +
"kind": "SCALAR", +
- "name": "String", +
+ "name": "Time", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "ilike", +
+ "name": "in", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "is", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "FilterIs", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "lt", +
"type": { +
"kind": "SCALAR", +
- "name": "String", +
+ "name": "Time", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "in", +
+ "name": "lte", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "neq", +
+ "type": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "TimeListFilter", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Boolean expression comparing fields on type \"TimeList\"", +
+ "inputFields": [ +
+ { +
+ "name": "cd", +
"type": { +
"kind": "LIST", +
"name": null, +
@@ -5542,7 +7351,7 @@ begin;
"name": null, +
"ofType": { +
"kind": "SCALAR", +
- "name": "String", +
+ "name": "Time", +
"ofType": null +
} +
} +
@@ -5551,81 +7360,145 @@ begin;
"defaultValue": null +
}, +
{ +
- "name": "iregex", +
+ "name": "cs", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "is", +
+ "name": "eq", +
"type": { +
- "kind": "ENUM", +
- "name": "FilterIs", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "like", +
+ "name": "gt", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "lt", +
+ "name": "gte", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "lte", +
+ "name": "lt", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "neq", +
+ "name": "lte", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "regex", +
+ "name": "neq", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "startsWith", +
+ "name": "ov", +
"type": { +
- "kind": "SCALAR", +
- "name": "String", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "Time", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
@@ -5635,58 +7508,89 @@ begin;
}, +
{ +
"kind": "SCALAR", +
- "name": "Time", +
+ "name": "UUID", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "A time without date information", +
+ "description": "A universally unique identifier", +
"inputFields": null, +
"possibleTypes": null +
}, +
{ +
"kind": "INPUT_OBJECT", +
- "name": "TimeFilter", +
+ "name": "UUIDFilter", +
"fields": null, +
"enumValues": [ +
], +
"interfaces": [ +
], +
- "description": "Boolean expression comparing fields on type \"Time\"", +
+ "description": "Boolean expression comparing fields on type \"UUID\"", +
"inputFields": [ +
{ +
"name": "eq", +
"type": { +
"kind": "SCALAR", +
- "name": "Time", +
+ "name": "UUID", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "gt", +
+ "name": "in", +
"type": { +
- "kind": "SCALAR", +
- "name": "Time", +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "UUID", +
+ "ofType": null +
+ } +
+ } +
+ }, +
+ "description": null, +
+ "defaultValue": null +
+ }, +
+ { +
+ "name": "is", +
+ "type": { +
+ "kind": "ENUM", +
+ "name": "FilterIs", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "gte", +
+ "name": "neq", +
"type": { +
"kind": "SCALAR", +
- "name": "Time", +
+ "name": "UUID", +
"ofType": null +
}, +
"description": null, +
"defaultValue": null +
- }, +
+ } +
+ ], +
+ "possibleTypes": null +
+ }, +
+ { +
+ "kind": "INPUT_OBJECT", +
+ "name": "UUIDListFilter", +
+ "fields": null, +
+ "enumValues": [ +
+ ], +
+ "interfaces": [ +
+ ], +
+ "description": "Boolean expression comparing fields on type \"UUIDList\"", +
+ "inputFields": [ +
{ +
- "name": "in", +
+ "name": "cd", +
"type": { +
"kind": "LIST", +
"name": null, +
@@ -5695,7 +7599,7 @@ begin;
"name": null, +
"ofType": { +
"kind": "SCALAR", +
- "name": "Time", +
+ "name": "UUID", +
"ofType": null +
} +
} +
@@ -5704,82 +7608,97 @@ begin;
"defaultValue": null +
}, +
{ +
- "name": "is", +
+ "name": "cs", +
"type": { +
- "kind": "ENUM", +
- "name": "FilterIs", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "UUID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "lt", +
+ "name": "eq", +
"type": { +
- "kind": "SCALAR", +
- "name": "Time", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "UUID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "lte", +
+ "name": "gt", +
"type": { +
- "kind": "SCALAR", +
- "name": "Time", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "UUID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "neq", +
+ "name": "gte", +
"type": { +
- "kind": "SCALAR", +
- "name": "Time", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "UUID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
- } +
- ], +
- "possibleTypes": null +
- }, +
- { +
- "kind": "SCALAR", +
- "name": "UUID", +
- "fields": null, +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "A universally unique identifier", +
- "inputFields": null, +
- "possibleTypes": null +
- }, +
- { +
- "kind": "INPUT_OBJECT", +
- "name": "UUIDFilter", +
- "fields": null, +
- "enumValues": [ +
- ], +
- "interfaces": [ +
- ], +
- "description": "Boolean expression comparing fields on type \"UUID\"", +
- "inputFields": [ +
+ }, +
{ +
- "name": "eq", +
+ "name": "lt", +
"type": { +
- "kind": "SCALAR", +
- "name": "UUID", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "UUID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "in", +
+ "name": "lte", +
"type": { +
"kind": "LIST", +
"name": null, +
@@ -5797,21 +7716,37 @@ begin;
"defaultValue": null +
}, +
{ +
- "name": "is", +
+ "name": "neq", +
"type": { +
- "kind": "ENUM", +
- "name": "FilterIs", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "UUID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
}, +
{ +
- "name": "neq", +
+ "name": "ov", +
"type": { +
- "kind": "SCALAR", +
- "name": "UUID", +
- "ofType": null +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null, +
+ "ofType": { +
+ "kind": "SCALAR", +
+ "name": "UUID", +
+ "ofType": null +
+ } +
+ } +
}, +
"description": null, +
"defaultValue": null +
diff --git a/test/expected/roundtrip_types.out b/test/expected/roundtrip_types.out
index a033a219..4e5bbd76 100644
--- a/test/expected/roundtrip_types.out
+++ b/test/expected/roundtrip_types.out
@@ -566,166 +566,198 @@ begin;
}
$$)
);
- jsonb_pretty
----------------------------------------------------
- { +
- "data": { +
- "__type": { +
- "kind": "INPUT_OBJECT", +
- "inputFields": [ +
- { +
- "name": "id", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "IntFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeBigint", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BigIntFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeText", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "StringFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeVarchar", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "StringFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeVarchar_n", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "StringFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeChar", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "StringFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeUuid", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "UUIDFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeDate", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "DateFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeTime", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "TimeFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeDatetime", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "DatetimeFilter",+
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeEnum", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "ColorFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeNumeric", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "BigFloatFilter",+
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeFloat", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "FloatFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "typeDouble", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "FloatFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "nodeId", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "IDFilter", +
- "ofType": null +
- } +
- }, +
- { +
- "name": "and", +
- "type": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null +
- } +
- } +
- }, +
- { +
- "name": "or", +
- "type": { +
- "kind": "LIST", +
- "name": null, +
- "ofType": { +
- "kind": "NON_NULL", +
- "name": null +
- } +
- } +
- }, +
- { +
- "name": "not", +
- "type": { +
- "kind": "INPUT_OBJECT", +
- "name": "MainTypeFilter",+
- "ofType": null +
- } +
- } +
- ] +
- } +
- } +
+ jsonb_pretty
+-------------------------------------------------------
+ { +
+ "data": { +
+ "__type": { +
+ "kind": "INPUT_OBJECT", +
+ "inputFields": [ +
+ { +
+ "name": "id", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "IntFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeBigint", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BigIntFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeText", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeVarchar", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeVarchar_n", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeChar", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeUuid", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "UUIDFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeDate", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "DateFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeTime", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "TimeFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeDatetime", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "DatetimeFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeEnum", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "ColorFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeNumeric", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BigFloatFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeFloat", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "FloatFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeDouble", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "FloatFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeArrayEnum", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "ColorListFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeArrayText", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "StringListFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeArrayJson", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "JSONListFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "typeArrayNumeric", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "BigFloatListFilter",+
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "nodeId", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "IDFilter", +
+ "ofType": null +
+ } +
+ }, +
+ { +
+ "name": "and", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null +
+ } +
+ } +
+ }, +
+ { +
+ "name": "or", +
+ "type": { +
+ "kind": "LIST", +
+ "name": null, +
+ "ofType": { +
+ "kind": "NON_NULL", +
+ "name": null +
+ } +
+ } +
+ }, +
+ { +
+ "name": "not", +
+ "type": { +
+ "kind": "INPUT_OBJECT", +
+ "name": "MainTypeFilter", +
+ "ofType": null +
+ } +
+ } +
+ ] +
+ } +
+ } +
}
(1 row)
diff --git a/test/sql/omit_exotic_types.sql b/test/sql/omit_exotic_types.sql
index 3f39e48c..cf081afe 100644
--- a/test/sql/omit_exotic_types.sql
+++ b/test/sql/omit_exotic_types.sql
@@ -1,9 +1,8 @@
begin;
/*
- Composite and array types are not currently supported as inputs
+ Composite types are not currently supported as inputs
- confirm composites are not allowed anywhere
- - confirm arrays are not allowed as input
*/
create type complex as (r int, i int);
diff --git a/test/sql/resolve_connection_filter.sql b/test/sql/resolve_connection_filter.sql
index f2dcc85f..777bff76 100644
--- a/test/sql/resolve_connection_filter.sql
+++ b/test/sql/resolve_connection_filter.sql
@@ -3,14 +3,15 @@ begin;
id int primary key,
is_verified bool,
name text,
- phone text
+ phone text,
+ tags text[]
);
- insert into public.account(id, is_verified, name, phone)
+ insert into public.account(id, is_verified, name, phone, tags)
values
- (1, true, 'foo', '1111111111'),
- (2, true, 'bar', null),
- (3, false, 'baz', '33333333333');
+ (1, true, 'foo', '1111111111', '{"customer", "priority"}'),
+ (2, true, 'bar', null, '{"customer"}'),
+ (3, false, 'baz', '33333333333', '{"lead", "priority"}');
savepoint a;
@@ -121,6 +122,86 @@ begin;
select graphql.resolve($${accountCollection(filter: {phone: {is: null}}) { edges { node { id } } }}$$);
rollback to savepoint a;
+ -- cs - array column contains the input scalar
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {cs: "customer"}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ rollback to savepoint a;
+
+ -- cd - array column is contained by input scalar (aka, the only value in the array column is the input scalar)
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {cd: "customer"}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ rollback to savepoint a;
+
+ -- cs - array column contains the input array
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {cs: ["customer", "priority"]}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ rollback to savepoint a;
+
+ -- cd - array column is contained by input array
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {cd: ["customer", "priority"]}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ rollback to savepoint a;
+
+ -- ov - array column overlaps with input array
+ select jsonb_pretty(
+ graphql.resolve($$
+ {
+ accountCollection(filter: {tags: {ov: ["customer", "priority"]}}) {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ $$)
+ );
+ rollback to savepoint a;
+
-- variable is - is null
select graphql.resolve($$query AAA($nis: FilterIs) { accountCollection(filter: {phone: {is: $nis}}) { edges { node { id } } }}$$, '{"nis": "NULL"}');
rollback to savepoint a;