@aws-amplify/graphql-transformer-interfaces
Version:
Amplify GraphQL transformer interface definitions
156 lines (146 loc) • 4.54 kB
text/typescript
import { ObjectTypeDefinitionNode, DirectiveDefinitionNode, InputValueDefinitionNode } from 'graphql';
import { TransformerResolverProvider, TransformerContextProvider, AppSyncDataSourceType, DataSourceInstance } from './transformer-context';
import { TransformerPluginProvider } from '.';
/**
* QueryFieldType
*/
export enum QueryFieldType {
GET = 'GET',
LIST = 'LIST',
SYNC = 'SYNC',
}
/**
* MutationFieldType
*/
export enum MutationFieldType {
CREATE = 'CREATE',
UPDATE = 'UPDATE',
DELETE = 'DELETE',
}
/**
* SubscriptionFieldType
*/
export enum SubscriptionFieldType {
ON_CREATE = 'ON_CREATE',
ON_DELETE = 'ON_DELETE',
ON_UPDATE = 'ON_UPDATE',
}
/**
* TransformerModelProvider
*/
export interface TransformerModelProvider extends TransformerPluginProvider {
getDataSourceType: () => AppSyncDataSourceType;
generateGetResolver: (
ctx: TransformerContextProvider,
type: ObjectTypeDefinitionNode,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
generateListResolver: (
ctx: TransformerContextProvider,
type: ObjectTypeDefinitionNode,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
generateCreateResolver: (
ctx: TransformerContextProvider,
type: ObjectTypeDefinitionNode,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
generateUpdateResolver: (
ctx: TransformerContextProvider,
type: ObjectTypeDefinitionNode,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
generateDeleteResolver: (
ctx: TransformerContextProvider,
type: ObjectTypeDefinitionNode,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
generateOnCreateResolver?: (
ctx: TransformerContextProvider,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
generateOnUpdateResolver?: (
ctx: TransformerContextProvider,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
generateOnDeleteResolver?: (
ctx: TransformerContextProvider,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
generateSyncResolver?: (
ctx: TransformerContextProvider,
type: ObjectTypeDefinitionNode,
typeName: string,
fieldName: string,
resolverLogicalId: string,
directive?: DirectiveDefinitionNode,
) => TransformerResolverProvider;
getQueryFieldNames: (
type: ObjectTypeDefinitionNode,
directive?: DirectiveDefinitionNode,
) => Set<{ fieldName: string; typeName: string; type: QueryFieldType }>;
getMutationFieldNames: (
type: ObjectTypeDefinitionNode,
directive?: DirectiveDefinitionNode,
) => Set<{ fieldName: string; typeName: string; type: MutationFieldType }>;
getSubscriptionFieldNames: (
type: ObjectTypeDefinitionNode,
directive?: DirectiveDefinitionNode,
) => Set<{
fieldName: string;
typeName: string;
type: SubscriptionFieldType;
}>;
// Get instance of the CDK resource to augment the table (like adding additional indexes)
getDataSourceResource: (type: ObjectTypeDefinitionNode) => DataSourceInstance;
getInputs: (
ctx: TransformerContextProvider,
type: ObjectTypeDefinitionNode,
operation: {
fieldName: string;
typeName: string;
type: QueryFieldType | MutationFieldType | SubscriptionFieldType;
},
) => InputValueDefinitionNode[];
getOutputType: (
ctx: TransformerContextProvider,
type: ObjectTypeDefinitionNode,
operation: {
fieldName: string;
typeName: string;
type: QueryFieldType | MutationFieldType | SubscriptionFieldType;
},
) => ObjectTypeDefinitionNode;
}
/**
* TransformerAuthProvider
*/
export type TransformerAuthProvider = TransformerPluginProvider;
/**
* TransformerModelEnhancementProvider
*/
export type TransformerModelEnhancementProvider = Partial<TransformerModelProvider>;