WorkflowProxy.ts overview
Since v1.0.0
Exports Grouped by Category
Constructors
toHttpApiGroup
Derives an HttpApiGroup
from a list of workflows.
import { HttpApi, HttpApiBuilder } from "@effect/platform"
import { Workflow, WorkflowProxy, WorkflowProxyServer } from "@effect/workflow"
import { Layer, Schema } from "effect"
const EmailWorkflow = Workflow.make({
name: "EmailWorkflow",
payload: {
id: Schema.String,
to: Schema.String
},
idempotencyKey: ({ id }) => id
})
const myWorkflows = [EmailWorkflow] as const
// Use WorkflowProxy.toHttpApiGroup to create a `HttpApiGroup` from the
// workflows
class MyApi extends HttpApi.make("api").add(WorkflowProxy.toHttpApiGroup("workflows", myWorkflows)) {}
// Use WorkflowProxyServer.layerHttpApi to create a layer that implements the
// workflows HttpApiGroup
const ApiLayer = HttpApiBuilder.api(MyApi).pipe(
Layer.provide(WorkflowProxyServer.layerHttpApi(MyApi, "workflows", myWorkflows))
)
Signature
declare const toHttpApiGroup: <const Name extends string, const Workflows extends NonEmptyReadonlyArray<Workflow.Any>>(
name: Name,
workflows: Workflows
) => HttpApiGroup.HttpApiGroup<Name, ConvertHttpApi<Workflows[number]>>
Since v1.0.0
toRpcGroup
Derives an RpcGroup
from a list of workflows.
import { RpcServer } from "@effect/rpc"
import { Workflow, WorkflowProxy, WorkflowProxyServer } from "@effect/workflow"
import { Layer, Schema } from "effect"
const EmailWorkflow = Workflow.make({
name: "EmailWorkflow",
payload: {
id: Schema.String,
to: Schema.String
},
idempotencyKey: ({ id }) => id
})
const myWorkflows = [EmailWorkflow] as const
// Use WorkflowProxy.toRpcGroup to create a `RpcGroup` from the
// workflows
class MyRpcs extends WorkflowProxy.toRpcGroup(myWorkflows) {}
// Use WorkflowProxyServer.layerRpcHandlers to create a layer that implements
// the rpc handlers
const ApiLayer = RpcServer.layer(MyRpcs).pipe(Layer.provide(WorkflowProxyServer.layerRpcHandlers(myWorkflows)))
Signature
declare const toRpcGroup: <
const Workflows extends NonEmptyReadonlyArray<Workflow.Any>,
const Prefix extends string = ""
>(
workflows: Workflows,
options?: { readonly prefix?: Prefix | undefined }
) => RpcGroup.RpcGroup<ConvertRpcs<Workflows[number], Prefix>>
Since v1.0.0
utils
ConvertHttpApi (type alias)
Signature
type ConvertHttpApi<Workflows> =
Workflows extends Workflow.Workflow<infer _Name, infer _Payload, infer _Success, infer _Error>
?
| HttpApiEndpoint.HttpApiEndpoint<
_Name,
"POST",
never,
never,
_Payload["Type"],
never,
_Success["Type"],
_Error["Type"],
_Payload["Context"] | _Success["Context"],
_Error["Context"]
>
| HttpApiEndpoint.HttpApiEndpoint<
`${_Name}Discard`,
"POST",
never,
never,
_Payload["Type"],
never,
void,
never,
_Payload["Context"]
>
: never
Since v1.0.0
ConvertRpcs (type alias)
Signature
type ConvertRpcs<Workflows, Prefix> =
Workflows extends Workflow.Workflow<infer _Name, infer _Payload, infer _Success, infer _Error>
? Rpc.Rpc<`${Prefix}${_Name}`, _Payload, _Success, _Error> | Rpc.Rpc<`${Prefix}${_Name}Discard`, _Payload>
: never
Since v1.0.0