GraphQL schema operations (#5993)
* Remove nested operations * Improve error log * Fix bug schema to load * Fix ParseGraphQLSchema tests * Fix tests * Fix failing tests * First verstion not complete of create class mutation * Fix bug caused by circular dependency * Renaming files * Schema types should be loaded before parse classes * Fix tests * Create class mutation boilerplate * Improve CreateClassSchemaInput fields names * Remove fields * Pointer and relation fields * Improve pointer default type * Class type * Create class mutation resolver * Schema field transformers * Class types transformations * First test * Numbers test * Boolean tests * Date test * Fix some get tests * Test for created at and updated at * File tests * Test for objects * Renaming reducerFabric to reducerGenerator * Changing get tests for file and object * Object composed queries test * Array test * Null field test * Bytes test * Geo Point test * Polygons tests * Remove create generic mutation * Fix tests * Create class test - isRequired and defaultValue will be added back later * Enforce master key * Fix tests * Duplicated field test * updateClass mutation * Remove update generic mutation tests * Remove update generic mutation * deleteClass mutation * Remove delete generic mutation tests * Remove delete generic mutation * class query * Classes query * Remove get generic query from tests * Remove remaining generic operations and fix tests * Fix last test * Try to fix redis tests * Fix postgres tests * Update objectsMutations and objectsQueries files locations * Rename classSchema files to schema files * Rename ClassObject to ParseObject * Fix names and paths * Still some wrong names
This commit is contained in:
committed by
GitHub
parent
e404c43222
commit
5a482bd661
127
src/GraphQL/helpers/objectsQueries.js
Normal file
127
src/GraphQL/helpers/objectsQueries.js
Normal file
@@ -0,0 +1,127 @@
|
||||
import Parse from 'parse/node';
|
||||
import rest from '../../rest';
|
||||
import { transformQueryInputToParse } from '../transformers/query';
|
||||
|
||||
const getObject = async (
|
||||
className,
|
||||
objectId,
|
||||
keys,
|
||||
include,
|
||||
readPreference,
|
||||
includeReadPreference,
|
||||
config,
|
||||
auth,
|
||||
info
|
||||
) => {
|
||||
const options = {};
|
||||
if (keys) {
|
||||
options.keys = keys;
|
||||
}
|
||||
if (include) {
|
||||
options.include = include;
|
||||
if (includeReadPreference) {
|
||||
options.includeReadPreference = includeReadPreference;
|
||||
}
|
||||
}
|
||||
if (readPreference) {
|
||||
options.readPreference = readPreference;
|
||||
}
|
||||
|
||||
const response = await rest.get(
|
||||
config,
|
||||
auth,
|
||||
className,
|
||||
objectId,
|
||||
options,
|
||||
info.clientSDK
|
||||
);
|
||||
|
||||
if (!response.results || response.results.length == 0) {
|
||||
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Object not found.');
|
||||
}
|
||||
|
||||
const object = response.results[0];
|
||||
if (className === '_User') {
|
||||
delete object.sessionToken;
|
||||
}
|
||||
return object;
|
||||
};
|
||||
|
||||
const findObjects = async (
|
||||
className,
|
||||
where,
|
||||
order,
|
||||
skip,
|
||||
limit,
|
||||
keys,
|
||||
include,
|
||||
includeAll,
|
||||
readPreference,
|
||||
includeReadPreference,
|
||||
subqueryReadPreference,
|
||||
config,
|
||||
auth,
|
||||
info,
|
||||
selectedFields
|
||||
) => {
|
||||
if (!where) {
|
||||
where = {};
|
||||
}
|
||||
transformQueryInputToParse(where);
|
||||
|
||||
const options = {};
|
||||
|
||||
if (selectedFields.includes('results')) {
|
||||
if (limit || limit === 0) {
|
||||
options.limit = limit;
|
||||
}
|
||||
if (options.limit !== 0) {
|
||||
if (order) {
|
||||
options.order = order;
|
||||
}
|
||||
if (skip) {
|
||||
options.skip = skip;
|
||||
}
|
||||
if (config.maxLimit && options.limit > config.maxLimit) {
|
||||
// Silently replace the limit on the query with the max configured
|
||||
options.limit = config.maxLimit;
|
||||
}
|
||||
if (keys) {
|
||||
options.keys = keys;
|
||||
}
|
||||
if (includeAll === true) {
|
||||
options.includeAll = includeAll;
|
||||
}
|
||||
if (!options.includeAll && include) {
|
||||
options.include = include;
|
||||
}
|
||||
if ((options.includeAll || options.include) && includeReadPreference) {
|
||||
options.includeReadPreference = includeReadPreference;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
options.limit = 0;
|
||||
}
|
||||
|
||||
if (selectedFields.includes('count')) {
|
||||
options.count = true;
|
||||
}
|
||||
|
||||
if (readPreference) {
|
||||
options.readPreference = readPreference;
|
||||
}
|
||||
if (Object.keys(where).length > 0 && subqueryReadPreference) {
|
||||
options.subqueryReadPreference = subqueryReadPreference;
|
||||
}
|
||||
|
||||
return await rest.find(
|
||||
config,
|
||||
auth,
|
||||
className,
|
||||
where,
|
||||
options,
|
||||
info.clientSDK
|
||||
);
|
||||
};
|
||||
|
||||
export { getObject, findObjects };
|
||||
Reference in New Issue
Block a user