Files
commander/examples/basic/commands.go
2024-08-01 23:42:30 +03:00

67 lines
887 B
Go

package main
import (
"context"
"errors"
"time"
)
type Entity struct {
Name string
Address string
}
type GetName struct {
UID string
Sleep time.Duration
Result Entity
}
func (b *GetName) CorrelationID() string {
return b.UID
}
func (b *GetName) Execute(context.Context) error {
b.Result = Entity{Name: "Bob"}
if b.Sleep > 0 {
time.Sleep(b.Sleep)
}
return nil
}
func (b *GetName) Rollback(context.Context) error {
b.Result = Entity{}
return nil
}
type GetAddress struct {
Input *Entity
Result Entity
}
func (b *GetAddress) CorrelationID() string {
return b.Input.Name
}
func (b *GetAddress) Execute(context.Context) error {
b.Result = *b.Input
if b.Result.Address != "" {
return errors.New("already set")
}
b.Result.Address = "London"
return nil
}
func (b *GetAddress) Rollback(context.Context) error {
b.Result = Entity{}
return nil
}