amplify-category-api
amplify-category-api copied to clipboard
Append custom resolvers to auto generated DDB resolvers
Is this feature request related to a new or existing Amplify category?
function
Is this related to another service?
No
Describe the feature you'd like to request
GIVEN Todo model, amplify auto generates createTodo mutation attached to DynamoDB resolver. Allow side effects on autogenerated mutations to perform custom operations. Example: Send an email (lambda function) after createTodo mutation. Currently there is no option to perform side affects on auto generated operations.
Describe the solution you'd like
Since all resolvers are pipeline resolvers, provide a way to append, prepend user-defined resolvers during schema design.
Auto-generated mutation:
Type Mutation {
createTodo(input:CreateTodoInput): Todo
}
Proposal
- Append to auto-generated resolver - executes after generated resolver
# @appendResolvers will append any user defined @function resolvers onto amplify generated resolvers.
# pipelineResolvers = [originalDDBCreateTodo, FunctionName-${env}]
# we need some kind of @ts-ignore to ignore compile time error on a future generated input ie, CreateTodoInput
Type Mutation {
@appendResolvers
createTodo(@ts-ignore input:CreateTodoInput): Todo @function(name: “FunctionName-${env}”)
}
- Prepend to auto-generated resolver - executes before generated resolver
# @prependResolvers will prepend any user defined @function resolvers onto amplify generated resolvers.
# pipelineResolvers = [FunctionName-${env}, originalDDBCreateTodo]
# we need some kind of @ts-ignore to ignore compile time error on a future generated input ie, CreateTodoInput
Type Mutation {
@prependResolvers
createTodo(@ts-ignore input:CreateTodoInput): Todo @function(name: “FunctionName-${env}”)
}
Describe alternatives you've considered
- Described solution for this feature request can be achieved using AppSync console manually - doesn't work in a CI/CD environment where manual change are overwritten on deployments.
- Move DDB resolvers to lambda - this is more manual work, slows down development beats the purpose of amplify.
Additional context
This is very important to our requirements to have side effects and simplify developer workflow to make it more intuitive by generating side effects from schema.
Is this something that you'd be interested in working on?
- [ ] 👋 I may be able to implement this feature request
- [ ] ⚠️ This feature might incur a breaking change