GraphQL Object constraints (#5715)
* GraphQL Object constraints
Implements the GraphQL Object constraints, which allows us to filter queries results using the `$eq`, `$lt`, `$gt`, `$in`, and other Parse supported constraints.
Example:
```
query objects {
findMyClass(where: {
objField: {
_eq: {
key: 'foo.bar',
value: 'hello'
},
_gt: {
key: 'foo.number',
value: 10
},
_lt: {
key: 'anotherNumber',
value: 5
}
}
}) {
results {
objectId
}
}
}
```
In the example above, we have the `findMyClass` query (automatically generated for the `MyClass` class), and a field named `objField` whose type is Object. The object below represents a valid `objField` value and would satisfy all constraints:
```
{
"foo": {
"bar": "hello",
"number": 11
},
"anotherNumber": 4
}
```
The Object constraint is applied only when using Parse class object type queries. When using "generic" queries such as `get` and `find`, this type of constraint is not available.
* Objects constraints not working on Postgres
Fixes the $eq, $ne, $gt, and $lt constraints when applied on an Object type field.
* Fix object constraint field name
* Fix Postgres constraints indexes
* fix: Object type composed constraints not working
* fix: Rename key and value fields
* refactor: Object constraints for generic queries
* fix: Object constraints not working on Postgres
This commit is contained in:
committed by
Antonio Davi Macedo Coelho de Castro
parent
e0690d0c56
commit
ef14ca530d
@@ -425,8 +425,12 @@ describe('schemas', () => {
|
||||
foo4: { type: 'Date', required: true },
|
||||
foo5: { type: 'Number', defaultValue: 5 },
|
||||
ptr: { type: 'Pointer', targetClass: 'SomeClass', required: false },
|
||||
defaultFalse: { type: 'Boolean', required: true, defaultValue: false },
|
||||
defaultZero: { type: 'Number', defaultValue: 0 }
|
||||
defaultFalse: {
|
||||
type: 'Boolean',
|
||||
required: true,
|
||||
defaultValue: false,
|
||||
},
|
||||
defaultZero: { type: 'Number', defaultValue: 0 },
|
||||
},
|
||||
},
|
||||
}).then(async response => {
|
||||
@@ -447,8 +451,12 @@ describe('schemas', () => {
|
||||
foo4: { type: 'Date', required: true },
|
||||
foo5: { type: 'Number', defaultValue: 5 },
|
||||
ptr: { type: 'Pointer', targetClass: 'SomeClass', required: false },
|
||||
defaultFalse: { type: 'Boolean', required: true, defaultValue: false },
|
||||
defaultZero: { type: 'Number', defaultValue: 0 }
|
||||
defaultFalse: {
|
||||
type: 'Boolean',
|
||||
required: true,
|
||||
defaultValue: false,
|
||||
},
|
||||
defaultZero: { type: 'Number', defaultValue: 0 },
|
||||
},
|
||||
classLevelPermissions: defaultClassLevelPermissions,
|
||||
});
|
||||
@@ -468,8 +476,8 @@ describe('schemas', () => {
|
||||
expect(obj.get('foo4')).toEqual(date);
|
||||
expect(obj.get('foo5')).toEqual(5);
|
||||
expect(obj.get('ptr')).toBeUndefined();
|
||||
expect(obj.get('defaultFalse')).toEqual(false)
|
||||
expect(obj.get('defaultZero')).toEqual(0)
|
||||
expect(obj.get('defaultFalse')).toEqual(false);
|
||||
expect(obj.get('defaultZero')).toEqual(0);
|
||||
expect(obj.get('ptr')).toBeUndefined();
|
||||
done();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user