Skip to content

Commit 39568ee

Browse files
committed
simplify
1 parent 344149c commit 39568ee

File tree

1 file changed

+54
-98
lines changed

1 file changed

+54
-98
lines changed

dbos/serialization_test.go

Lines changed: 54 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -615,118 +615,74 @@ var (
615615
serializerBoolWorkflow = makeTestWorkflow[bool]()
616616
)
617617

618-
// Typed Send/Recv workflows for various types
619-
func serializerIntSenderWorkflow(ctx DBOSContext, input int) (int, error) {
620-
receiverWorkflowID, err := GetWorkflowID(ctx)
621-
if err != nil {
622-
return 0, fmt.Errorf("failed to get workflow ID: %w", err)
623-
}
624-
destID := receiverWorkflowID + "-receiver"
625-
err = Send(ctx, destID, input, "test-topic")
626-
if err != nil {
627-
return 0, fmt.Errorf("send failed: %w", err)
628-
}
629-
return input, nil
630-
}
631-
632-
func serializerIntReceiverWorkflow(ctx DBOSContext, _ int) (int, error) {
633-
received, err := Recv[int](ctx, "test-topic", 10*time.Second)
634-
if err != nil {
635-
return 0, fmt.Errorf("recv failed: %w", err)
618+
// makeSenderWorkflow creates a generic sender workflow that sends a message to a receiver workflow.
619+
func makeSenderWorkflow[T any]() Workflow[T, T] {
620+
return func(ctx DBOSContext, input T) (T, error) {
621+
receiverWorkflowID, err := GetWorkflowID(ctx)
622+
if err != nil {
623+
return *new(T), fmt.Errorf("failed to get workflow ID: %w", err)
624+
}
625+
destID := receiverWorkflowID + "-receiver"
626+
err = Send(ctx, destID, input, "test-topic")
627+
if err != nil {
628+
return *new(T), fmt.Errorf("send failed: %w", err)
629+
}
630+
return input, nil
636631
}
637-
return received, nil
638632
}
639633

640-
func serializerIntPtrSenderWorkflow(ctx DBOSContext, input *int) (*int, error) {
641-
receiverWorkflowID, err := GetWorkflowID(ctx)
642-
if err != nil {
643-
return nil, fmt.Errorf("failed to get workflow ID: %w", err)
644-
}
645-
destID := receiverWorkflowID + "-receiver"
646-
err = Send(ctx, destID, input, "test-topic")
647-
if err != nil {
648-
return nil, fmt.Errorf("send failed: %w", err)
634+
// makeReceiverWorkflow creates a generic receiver workflow that receives a message.
635+
func makeReceiverWorkflow[T any]() Workflow[T, T] {
636+
return func(ctx DBOSContext, _ T) (T, error) {
637+
received, err := Recv[T](ctx, "test-topic", 10*time.Second)
638+
if err != nil {
639+
return *new(T), fmt.Errorf("recv failed: %w", err)
640+
}
641+
return received, nil
649642
}
650-
return input, nil
651643
}
652644

653-
func serializerIntPtrReceiverWorkflow(ctx DBOSContext, _ *int) (*int, error) {
654-
received, err := Recv[*int](ctx, "test-topic", 10*time.Second)
655-
if err != nil {
656-
return nil, fmt.Errorf("recv failed: %w", err)
645+
// makeSetEventWorkflow creates a generic workflow that sets an event.
646+
func makeSetEventWorkflow[T any]() Workflow[T, T] {
647+
return func(ctx DBOSContext, input T) (T, error) {
648+
err := SetEvent(ctx, "test-key", input)
649+
if err != nil {
650+
return *new(T), fmt.Errorf("set event failed: %w", err)
651+
}
652+
return input, nil
657653
}
658-
return received, nil
659654
}
660655

661-
func serializerMyIntSenderWorkflow(ctx DBOSContext, input MyInt) (MyInt, error) {
662-
receiverWorkflowID, err := GetWorkflowID(ctx)
663-
if err != nil {
664-
return 0, fmt.Errorf("failed to get workflow ID: %w", err)
665-
}
666-
destID := receiverWorkflowID + "-receiver"
667-
err = Send(ctx, destID, input, "test-topic")
668-
if err != nil {
669-
return 0, fmt.Errorf("send failed: %w", err)
656+
// makeGetEventWorkflow creates a generic workflow that gets an event.
657+
func makeGetEventWorkflow[T any]() Workflow[string, T] {
658+
return func(ctx DBOSContext, targetWorkflowID string) (T, error) {
659+
event, err := GetEvent[T](ctx, targetWorkflowID, "test-key", 10*time.Second)
660+
if err != nil {
661+
return *new(T), fmt.Errorf("get event failed: %w", err)
662+
}
663+
return event, nil
670664
}
671-
return input, nil
672665
}
673666

674-
func serializerMyIntReceiverWorkflow(ctx DBOSContext, _ MyInt) (MyInt, error) {
675-
received, err := Recv[MyInt](ctx, "test-topic", 10*time.Second)
676-
if err != nil {
677-
return 0, fmt.Errorf("recv failed: %w", err)
678-
}
679-
return received, nil
680-
}
667+
// Typed Send/Recv workflows for various types
668+
var (
669+
serializerIntSenderWorkflow = makeSenderWorkflow[int]()
670+
serializerIntReceiverWorkflow = makeReceiverWorkflow[int]()
671+
serializerIntPtrSenderWorkflow = makeSenderWorkflow[*int]()
672+
serializerIntPtrReceiverWorkflow = makeReceiverWorkflow[*int]()
673+
serializerMyIntSenderWorkflow = makeSenderWorkflow[MyInt]()
674+
serializerMyIntReceiverWorkflow = makeReceiverWorkflow[MyInt]()
675+
)
681676

682677
// Typed SetEvent/GetEvent workflows for various types
683-
func serializerIntSetEventWorkflow(ctx DBOSContext, input int) (int, error) {
684-
err := SetEvent(ctx, "test-key", input)
685-
if err != nil {
686-
return 0, fmt.Errorf("set event failed: %w", err)
687-
}
688-
return input, nil
689-
}
690-
691-
func serializerIntGetEventWorkflow(ctx DBOSContext, targetWorkflowID string) (int, error) {
692-
event, err := GetEvent[int](ctx, targetWorkflowID, "test-key", 10*time.Second)
693-
if err != nil {
694-
return 0, fmt.Errorf("get event failed: %w", err)
695-
}
696-
return event, nil
697-
}
698-
699-
func serializerIntPtrSetEventWorkflow(ctx DBOSContext, input *int) (*int, error) {
700-
err := SetEvent(ctx, "test-key", input)
701-
if err != nil {
702-
return nil, fmt.Errorf("set event failed: %w", err)
703-
}
704-
return input, nil
705-
}
706-
707-
func serializerIntPtrGetEventWorkflow(ctx DBOSContext, targetWorkflowID string) (*int, error) {
708-
event, err := GetEvent[*int](ctx, targetWorkflowID, "test-key", 10*time.Second)
709-
if err != nil {
710-
return nil, fmt.Errorf("get event failed: %w", err)
711-
}
712-
return event, nil
713-
}
714-
715-
func serializerMyIntSetEventWorkflow(ctx DBOSContext, input MyInt) (MyInt, error) {
716-
err := SetEvent(ctx, "test-key", input)
717-
if err != nil {
718-
return 0, fmt.Errorf("set event failed: %w", err)
719-
}
720-
return input, nil
721-
}
722-
723-
func serializerMyIntGetEventWorkflow(ctx DBOSContext, targetWorkflowID string) (MyInt, error) {
724-
event, err := GetEvent[MyInt](ctx, targetWorkflowID, "test-key", 10*time.Second)
725-
if err != nil {
726-
return 0, fmt.Errorf("get event failed: %w", err)
727-
}
728-
return event, nil
729-
}
678+
var (
679+
serializerIntSetEventWorkflow = makeSetEventWorkflow[int]()
680+
serializerIntGetEventWorkflow = makeGetEventWorkflow[int]()
681+
serializerIntPtrSetEventWorkflow = makeSetEventWorkflow[*int]()
682+
serializerIntPtrGetEventWorkflow = makeGetEventWorkflow[*int]()
683+
serializerMyIntSetEventWorkflow = makeSetEventWorkflow[MyInt]()
684+
serializerMyIntGetEventWorkflow = makeGetEventWorkflow[MyInt]()
685+
)
730686

731687
func serializerInterfaceValueWorkflow(ctx DBOSContext, input DataProvider) (DataProvider, error) {
732688
return RunAsStep(ctx, func(context context.Context) (DataProvider, error) {

0 commit comments

Comments
 (0)