Skip to content

Multiple handlers with different request and response types #117

@stevemao

Description

@stevemao

I can add multiple handlers like this

runLambdaHaskellRuntime
    defaultDispatcherOptions
    (pure ())
    id $ do
      addAPIGatewayHandler "api-gateway" gatewayHandler
      addALBHandler "alb" albHandler
      addStandaloneLambdaHandler "standalone" regularHandler

gatewayHandler ::
  ApiGatewayRequest request ->
  Context context ->
  IO (Either (ApiGatewayResponse error) (ApiGatewayResponse response))
gatewayHandler = doSomething

albHandler ::
  ALBRequest request ->
  Context context ->
  IO (Either (ALBResponse error) (ALBResponse response))
albHandler = doSomething

regularHandler ::
  request ->
  Context context ->
  IO (Either error response)
regularHandler = doSomething

But the request and response type must be the same for all the handlers. What's the recommended way to add handlers with different types?

EG:

gatewayHandler ::
  ApiGatewayRequest Foo ->
  Context context ->
  IO (Either (ApiGatewayResponse Error) (ApiGatewayResponse Bar))
gatewayHandler = doSomething1

albHandler ::
  ALBRequest Bar ->
  Context context ->
  IO (Either (ALBResponse error) (ALBResponse response))
albHandler = doSomething2

regularHandler ::
  request ->
  Context context ->
  IO (Either error response)
regularHandler = doSomething3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions