本文整理汇总了TypeScript中graphql.GraphQLSchema.getQueryType方法的典型用法代码示例。如果您正苦于以下问题:TypeScript GraphQLSchema.getQueryType方法的具体用法?TypeScript GraphQLSchema.getQueryType怎么用?TypeScript GraphQLSchema.getQueryType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类graphql.GraphQLSchema
的用法示例。
在下文中一共展示了GraphQLSchema.getQueryType方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: addSchemaLevelResolveFunction
// wraps all resolve functions of query, mutation or subscription fields
// with the provided function to simulate a root schema level resolve funciton
function addSchemaLevelResolveFunction(
schema: GraphQLSchema,
fn: GraphQLFieldResolver<any, any>,
): void {
// TODO test that schema is a schema, fn is a function
const rootTypes = [
schema.getQueryType(),
schema.getMutationType(),
schema.getSubscriptionType(),
].filter(x => !!x);
rootTypes.forEach(type => {
// XXX this should run at most once per request to simulate a true root resolver
// for graphql-js this is an approximation that works with queries but not mutations
const rootResolveFn = runAtMostOncePerRequest(fn);
const fields = type.getFields();
Object.keys(fields).forEach(fieldName => {
// XXX if the type is a subscription, a same query AST will be ran multiple times so we
// deactivate here the runOnce if it's a subscription. This may not be optimal though...
if (type === schema.getSubscriptionType()) {
fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, fn);
} else {
fields[fieldName].resolve = wrapResolver(
fields[fieldName].resolve,
rootResolveFn,
);
}
});
});
}
示例2: switch
const getOperationFields: (operation: OperationTypeNode) => GraphQLObjectType | null | undefined = operation => {
switch (operation) {
case 'query':
return parsedSchema.getQueryType();
case 'mutation':
return parsedSchema.getMutationType();
case 'subscription':
return parsedSchema.getSubscriptionType();
default:
throw new Error('Unsupported Operation');
}
};
示例3: if
operations.forEach((operation: OperationDefinitionNode) => {
let type;
if (operation.operation === 'subscription') {
type = targetSchema.getSubscriptionType();
} else if (operation.operation === 'mutation') {
type = targetSchema.getMutationType();
} else {
type = targetSchema.getQueryType();
}
const {
selectionSet,
usedFragments: operationUsedFragments,
usedVariables: operationUsedVariables,
} = filterSelectionSet(
targetSchema,
type,
validFragmentsWithType,
operation.selectionSet
);
usedFragments = union(usedFragments, operationUsedFragments);
const {
usedVariables: collectedUsedVariables,
newFragments: collectedNewFragments,
fragmentSet: collectedFragmentSet,
} = collectFragmentVariables(
targetSchema,
fragmentSet,
validFragments,
validFragmentsWithType,
usedFragments,
);
const fullUsedVariables =
union(operationUsedVariables, collectedUsedVariables);
newFragments = collectedNewFragments;
fragmentSet = collectedFragmentSet;
const variableDefinitions = operation.variableDefinitions.filter(
(variable: VariableDefinitionNode) =>
fullUsedVariables.indexOf(variable.variable.name.value) !== -1,
);
newOperations.push({
kind: Kind.OPERATION_DEFINITION,
operation: operation.operation,
name: operation.name,
directives: operation.directives,
variableDefinitions,
selectionSet,
});
});
示例4: visitSchema
export function visitSchema(
schema: GraphQLSchema,
visitor: SchemaVisitor,
stripResolvers?: boolean,
) {
const types = {};
const resolveType = createResolveType(name => {
if (typeof types[name] === 'undefined') {
throw new Error(`Can't find type ${name}.`);
}
return types[name];
});
const queryType = schema.getQueryType();
const mutationType = schema.getMutationType();
const subscriptionType = schema.getSubscriptionType();
const typeMap = schema.getTypeMap();
Object.keys(typeMap).map((typeName: string) => {
const type = typeMap[typeName];
if (isNamedType(type) && getNamedType(type).name.slice(0, 2) !== '__') {
const specifiers = getTypeSpecifiers(type, schema);
const typeVisitor = getVisitor(visitor, specifiers);
if (typeVisitor) {
const result: GraphQLNamedType | null | undefined = typeVisitor(
type,
schema,
);
if (typeof result === 'undefined') {
types[typeName] = recreateType(type, resolveType, !stripResolvers);
} else if (result === null) {
types[typeName] = null;
} else {
types[typeName] = recreateType(result, resolveType, !stripResolvers);
}
} else {
types[typeName] = recreateType(type, resolveType, !stripResolvers);
}
}
});
return new GraphQLSchema({
query: queryType ? (types[queryType.name] as GraphQLObjectType) : null,
mutation: mutationType
? (types[mutationType.name] as GraphQLObjectType)
: null,
subscription: subscriptionType
? (types[subscriptionType.name] as GraphQLObjectType)
: null,
types: Object.keys(types).map(name => types[name]),
});
}
示例5: addSchema
public addSchema(schema: GraphQLSchema) {
const query = schema.getQueryType();
if (query) {
const fieldNames = Object.keys(query.getFields());
fieldNames.forEach(field => {
this.schemaByField.query[field] = schema;
});
}
const mutation = schema.getMutationType();
if (mutation) {
const fieldNames = Object.keys(mutation.getFields());
fieldNames.forEach(field => {
this.schemaByField.mutation[field] = schema;
});
}
}
示例6: getTypeSpecifiers
function getTypeSpecifiers(
type: GraphQLType,
schema: GraphQLSchema,
): Array<VisitSchemaKind> {
const specifiers = [VisitSchemaKind.TYPE];
if (type instanceof GraphQLObjectType) {
specifiers.unshift(
VisitSchemaKind.COMPOSITE_TYPE,
VisitSchemaKind.OBJECT_TYPE,
);
const query = schema.getQueryType();
const mutation = schema.getMutationType();
const subscription = schema.getSubscriptionType();
if (type === query) {
specifiers.push(VisitSchemaKind.ROOT_OBJECT, VisitSchemaKind.QUERY);
} else if (type === mutation) {
specifiers.push(VisitSchemaKind.ROOT_OBJECT, VisitSchemaKind.MUTATION);
} else if (type === subscription) {
specifiers.push(
VisitSchemaKind.ROOT_OBJECT,
VisitSchemaKind.SUBSCRIPTION,
);
}
} else if (type instanceof GraphQLInputObjectType) {
specifiers.push(VisitSchemaKind.INPUT_OBJECT_TYPE);
} else if (type instanceof GraphQLInterfaceType) {
specifiers.push(
VisitSchemaKind.COMPOSITE_TYPE,
VisitSchemaKind.ABSTRACT_TYPE,
VisitSchemaKind.INTERFACE_TYPE,
);
} else if (type instanceof GraphQLUnionType) {
specifiers.push(
VisitSchemaKind.COMPOSITE_TYPE,
VisitSchemaKind.ABSTRACT_TYPE,
VisitSchemaKind.UNION_TYPE,
);
} else if (type instanceof GraphQLEnumType) {
specifiers.push(VisitSchemaKind.ENUM_TYPE);
} else if (type instanceof GraphQLScalarType) {
specifiers.push(VisitSchemaKind.SCALAR_TYPE);
}
return specifiers;
}
示例7: it
it('should parse descriptions on new fields', () => {
const Query = mergedSchema.getQueryType();
expect(Query.getFields().linkTest.description).to.equal(
'A new field on the root query.',
);
const Booking = mergedSchema.getType('Booking') as GraphQLObjectType;
expect(Booking.getFields().property.description).to.equal(
'The property of the booking.',
);
const Property = mergedSchema.getType('Property') as GraphQLObjectType;
const bookingsField = Property.getFields().bookings;
expect(bookingsField.description).to.equal('A list of bookings.');
expect(bookingsField.args[0].description).to.equal(
'The maximum number of bookings to retrieve.',
);
});
示例8: generateSimpleMapping
export function generateSimpleMapping(targetSchema: GraphQLSchema): Mapping {
const query = targetSchema.getQueryType();
const mutation = targetSchema.getMutationType();
const subscription = targetSchema.getSubscriptionType();
const result: Mapping = {};
if (query) {
result[query.name] = generateMappingFromObjectType(query, 'query');
}
if (mutation) {
result[mutation.name] = generateMappingFromObjectType(mutation, 'mutation');
}
if (subscription) {
result[subscription.name] = generateMappingFromObjectType(
subscription,
'subscription',
);
}
return result;
}
示例9: delegateToSchema
async function delegateToSchema(
schema: GraphQLSchema,
fragmentReplacements: {
[typeName: string]: { [fieldName: string]: InlineFragmentNode };
},
operation: 'query' | 'mutation',
fieldName: string,
args: { [key: string]: any },
context: { [key: string]: any },
info: GraphQLResolveInfo,
): Promise<any> {
let type;
if (operation === 'mutation') {
type = schema.getMutationType();
} else {
type = schema.getQueryType();
}
if (type) {
const graphqlDoc: DocumentNode = createDocument(
schema,
fragmentReplacements,
type,
fieldName,
operation,
info.fieldNodes,
info.fragments,
info.operation.variableDefinitions,
);
const operationDefinition = graphqlDoc.definitions.find(
({ kind }) => kind === Kind.OPERATION_DEFINITION,
);
let variableValues = {};
if (
operationDefinition &&
operationDefinition.kind === Kind.OPERATION_DEFINITION &&
operationDefinition.variableDefinitions
) {
operationDefinition.variableDefinitions.forEach(definition => {
const key = definition.variable.name.value;
// (XXX) This is kinda hacky
let actualKey = key;
if (actualKey.startsWith('_')) {
actualKey = actualKey.slice(1);
}
const value = args[actualKey] || args[key] || info.variableValues[key];
variableValues[key] = value;
});
}
const result = await execute(
schema,
graphqlDoc,
info.rootValue,
context,
variableValues,
);
return checkResultAndHandleErrors(result, info, fieldName);
}
throw new Error('Could not forward to merged schema');
}
示例10:
.filter(typeName => typeName !== (ast.getQueryType() as any).name)