From d36fec58c6cfeb83613f66402a159255f182529e Mon Sep 17 00:00:00 2001 From: Jack Kleeman Date: Thu, 22 Aug 2024 09:18:42 +0100 Subject: [PATCH] Update for latest go sdk (#179) --- .../tour-of-restate-go/app/cartobject.go | 6 +-- .../tour-of-restate-go/app/ticketobject.go | 10 ++-- tutorials/tour-of-restate-go/go.mod | 4 +- tutorials/tour-of-restate-go/go.sum | 8 +-- .../tour-of-restate-go/part1/cartobject.go | 16 +++--- .../tour-of-restate-go/part1/ticketobject.go | 10 ++-- .../tour-of-restate-go/part2/cartobject.go | 20 +++---- .../tour-of-restate-go/part2/ticketobject.go | 10 ++-- .../tour-of-restate-go/part3/cartobject.go | 52 +++++++----------- .../tour-of-restate-go/part3/ticketobject.go | 34 ++++++------ .../tour-of-restate-go/part4/cartobject.go | 54 +++++++------------ .../part4/checkoutservice.go | 8 +-- .../tour-of-restate-go/part4/ticketobject.go | 34 ++++++------ 13 files changed, 115 insertions(+), 151 deletions(-) diff --git a/tutorials/tour-of-restate-go/app/cartobject.go b/tutorials/tour-of-restate-go/app/cartobject.go index c97a1c61..706c7e2c 100644 --- a/tutorials/tour-of-restate-go/app/cartobject.go +++ b/tutorials/tour-of-restate-go/app/cartobject.go @@ -9,12 +9,12 @@ func (CartObject) AddTicket(ctx restate.ObjectContext, ticketId string) (bool, e return true, nil } -func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, error) { +func (CartObject) Checkout(ctx restate.ObjectContext) (bool, error) { return true, nil } -func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) (restate.Void, error) { - return restate.Void{}, nil +func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) error { + return nil } // diff --git a/tutorials/tour-of-restate-go/app/ticketobject.go b/tutorials/tour-of-restate-go/app/ticketobject.go index 6da30052..82ba0ce2 100644 --- a/tutorials/tour-of-restate-go/app/ticketobject.go +++ b/tutorials/tour-of-restate-go/app/ticketobject.go @@ -4,14 +4,14 @@ import restate "github.com/restatedev/sdk-go" type TicketObject struct{} -func (TicketObject) Reserve(ctx restate.ObjectContext, _ restate.Void) (bool, error) { +func (TicketObject) Reserve(ctx restate.ObjectContext) (bool, error) { return true, nil } -func (TicketObject) Unreserve(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - return restate.Void{}, nil +func (TicketObject) Unreserve(ctx restate.ObjectContext) error { + return nil } -func (TicketObject) MarkAsSold(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - return restate.Void{}, nil +func (TicketObject) MarkAsSold(ctx restate.ObjectContext) error { + return nil } diff --git a/tutorials/tour-of-restate-go/go.mod b/tutorials/tour-of-restate-go/go.mod index f4dc865a..fbe188cb 100644 --- a/tutorials/tour-of-restate-go/go.mod +++ b/tutorials/tour-of-restate-go/go.mod @@ -2,7 +2,7 @@ module github.com/restatedev/examples/tutorials/tour-of-restate-go go 1.22.5 -require github.com/restatedev/sdk-go v0.10.0 +require github.com/restatedev/sdk-go v0.10.1-0.20240822080656-66e4239b3022 require ( github.com/golang-jwt/jwt/v5 v5.2.1 // indirect @@ -10,5 +10,5 @@ require ( github.com/mr-tron/base58 v1.2.0 // indirect golang.org/x/net v0.23.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect ) diff --git a/tutorials/tour-of-restate-go/go.sum b/tutorials/tour-of-restate-go/go.sum index 9963b97c..042e5acf 100644 --- a/tutorials/tour-of-restate-go/go.sum +++ b/tutorials/tour-of-restate-go/go.sum @@ -10,8 +10,8 @@ github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/restatedev/sdk-go v0.10.0 h1:JkPxHCqxF3jAT59qSu4TrW7eHFumMQOyv3JrvlDoULY= -github.com/restatedev/sdk-go v0.10.0/go.mod h1:6gHoU8pyP7YQfFWxKG2u94u/TSGen0qN7BWowWNDw4Y= +github.com/restatedev/sdk-go v0.10.1-0.20240822080656-66e4239b3022 h1:tCicwLNryIL36E/BIOxHuDXjP21+12NavnaXx5HZbvU= +github.com/restatedev/sdk-go v0.10.1-0.20240822080656-66e4239b3022/go.mod h1:6gHoU8pyP7YQfFWxKG2u94u/TSGen0qN7BWowWNDw4Y= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= @@ -22,7 +22,7 @@ golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tutorials/tour-of-restate-go/part1/cartobject.go b/tutorials/tour-of-restate-go/part1/cartobject.go index 5165d62b..8a126c0a 100644 --- a/tutorials/tour-of-restate-go/part1/cartobject.go +++ b/tutorials/tour-of-restate-go/part1/cartobject.go @@ -7,7 +7,7 @@ type CartObject struct{} // func (CartObject) AddTicket(ctx restate.ObjectContext, ticketId string) (bool, error) { // withClass highlight-line - reservationSuccess, err := restate.CallAs[bool](ctx.Object("TicketObject", ticketId, "Reserve")).Request(restate.Void{}) + reservationSuccess, err := restate.Object[bool](ctx, "TicketObject", ticketId, "Reserve").Request(restate.Void{}) if err != nil { return false, err } @@ -18,10 +18,10 @@ func (CartObject) AddTicket(ctx restate.ObjectContext, ticketId string) (bool, e // // -func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, error) { +func (CartObject) Checkout(ctx restate.ObjectContext) (bool, error) { // withClass(1:2) highlight-line - success, err := restate.CallAs[bool](ctx.Service("CheckoutService", "Handle")). - Request(CheckoutRequest{UserId: ctx.Key(), Tickets: []string{"seat2B"}}) + success, err := restate.Service[bool](ctx, "CheckoutService", "Handle"). + Request(CheckoutRequest{UserId: restate.Key(ctx), Tickets: []string{"seat2B"}}) if err != nil { return false, err } @@ -32,13 +32,11 @@ func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, err // // -func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) (restate.Void, error) { +func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) error { // withClass highlight-line - if err := ctx.Object("TicketObject", ticketId, "Unreserve").Send(restate.Void{}, 0); err != nil { - return restate.Void{}, err - } + restate.ObjectSend(ctx, "TicketObject", ticketId, "Unreserve").Send(restate.Void{}) - return restate.Void{}, nil + return nil } // diff --git a/tutorials/tour-of-restate-go/part1/ticketobject.go b/tutorials/tour-of-restate-go/part1/ticketobject.go index 6da30052..82ba0ce2 100644 --- a/tutorials/tour-of-restate-go/part1/ticketobject.go +++ b/tutorials/tour-of-restate-go/part1/ticketobject.go @@ -4,14 +4,14 @@ import restate "github.com/restatedev/sdk-go" type TicketObject struct{} -func (TicketObject) Reserve(ctx restate.ObjectContext, _ restate.Void) (bool, error) { +func (TicketObject) Reserve(ctx restate.ObjectContext) (bool, error) { return true, nil } -func (TicketObject) Unreserve(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - return restate.Void{}, nil +func (TicketObject) Unreserve(ctx restate.ObjectContext) error { + return nil } -func (TicketObject) MarkAsSold(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - return restate.Void{}, nil +func (TicketObject) MarkAsSold(ctx restate.ObjectContext) error { + return nil } diff --git a/tutorials/tour-of-restate-go/part2/cartobject.go b/tutorials/tour-of-restate-go/part2/cartobject.go index eb3e9605..024d5e0f 100644 --- a/tutorials/tour-of-restate-go/part2/cartobject.go +++ b/tutorials/tour-of-restate-go/part2/cartobject.go @@ -11,16 +11,14 @@ type CartObject struct{} // func (CartObject) AddTicket(ctx restate.ObjectContext, ticketId string) (bool, error) { // withClass highlight-line - reservationSuccess, err := restate.CallAs[bool](ctx.Object("TicketObject", ticketId, "Reserve")).Request(restate.Void{}) + reservationSuccess, err := restate.Object[bool](ctx, "TicketObject", ticketId, "Reserve").Request(restate.Void{}) if err != nil { return false, err } if reservationSuccess { // withClass highlight-line - if err := ctx.Object("CartObject", ctx.Key(), "ExpireTicket").Send(ticketId, 15*time.Minute); err != nil { - return false, err - } + restate.ObjectSend(ctx, "CartObject", restate.Key(ctx), "ExpireTicket").Send(ticketId, restate.WithDelay(15*time.Minute)) } return reservationSuccess, nil @@ -29,10 +27,10 @@ func (CartObject) AddTicket(ctx restate.ObjectContext, ticketId string) (bool, e // // -func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, error) { +func (CartObject) Checkout(ctx restate.ObjectContext) (bool, error) { // withClass(1:2) highlight-line - success, err := restate.CallAs[bool](ctx.Service("CheckoutService", "Handle")). - Request(CheckoutRequest{UserId: ctx.Key(), Tickets: []string{"seat2B"}}) + success, err := restate.Service[bool](ctx, "CheckoutService", "Handle"). + Request(CheckoutRequest{UserId: restate.Key(ctx), Tickets: []string{"seat2B"}}) if err != nil { return false, err } @@ -43,13 +41,11 @@ func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, err // // -func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) (restate.Void, error) { +func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) error { // withClass highlight-line - if err := ctx.Object("TicketObject", ticketId, "Unreserve").Send(restate.Void{}, 0); err != nil { - return restate.Void{}, err - } + restate.ObjectSend(ctx, "TicketObject", ticketId, "Unreserve").Send(restate.Void{}) - return restate.Void{}, nil + return nil } // diff --git a/tutorials/tour-of-restate-go/part2/ticketobject.go b/tutorials/tour-of-restate-go/part2/ticketobject.go index 6da30052..82ba0ce2 100644 --- a/tutorials/tour-of-restate-go/part2/ticketobject.go +++ b/tutorials/tour-of-restate-go/part2/ticketobject.go @@ -4,14 +4,14 @@ import restate "github.com/restatedev/sdk-go" type TicketObject struct{} -func (TicketObject) Reserve(ctx restate.ObjectContext, _ restate.Void) (bool, error) { +func (TicketObject) Reserve(ctx restate.ObjectContext) (bool, error) { return true, nil } -func (TicketObject) Unreserve(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - return restate.Void{}, nil +func (TicketObject) Unreserve(ctx restate.ObjectContext) error { + return nil } -func (TicketObject) MarkAsSold(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - return restate.Void{}, nil +func (TicketObject) MarkAsSold(ctx restate.ObjectContext) error { + return nil } diff --git a/tutorials/tour-of-restate-go/part3/cartobject.go b/tutorials/tour-of-restate-go/part3/cartobject.go index e9f36e49..d00e59ec 100644 --- a/tutorials/tour-of-restate-go/part3/cartobject.go +++ b/tutorials/tour-of-restate-go/part3/cartobject.go @@ -1,7 +1,6 @@ package main import ( - "errors" "slices" "time" @@ -13,25 +12,21 @@ type CartObject struct{} // func (CartObject) AddTicket(ctx restate.ObjectContext, ticketId string) (bool, error) { // withClass highlight-line - reservationSuccess, err := restate.CallAs[bool](ctx.Object("TicketObject", ticketId, "Reserve")).Request(restate.Void{}) + reservationSuccess, err := restate.Object[bool](ctx, "TicketObject", ticketId, "Reserve").Request(restate.Void{}) if err != nil { return false, err } if reservationSuccess { - // withClass(1:8) highlight-line - tickets, err := restate.GetAs[[]string](ctx, "tickets") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { + // withClass(1:6) highlight-line + tickets, err := restate.Get[[]string](ctx, "tickets") + if err != nil { return false, err } tickets = append(tickets, ticketId) - if err := ctx.Set("tickets", tickets); err != nil { - return false, err - } + restate.Set(ctx, "tickets", tickets) - if err := ctx.Object("CartObject", ctx.Key(), "ExpireTicket").Send(ticketId, 15*time.Minute); err != nil { - return false, err - } + restate.ObjectSend(ctx, "CartObject", restate.Key(ctx), "ExpireTicket").Send(ticketId, restate.WithDelay(15*time.Minute)) } return reservationSuccess, nil @@ -40,25 +35,22 @@ func (CartObject) AddTicket(ctx restate.ObjectContext, ticketId string) (bool, e // // -func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, error) { - // withClass(1:7) highlight-line - tickets, err := restate.GetAs[[]string](ctx, "tickets") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { +func (CartObject) Checkout(ctx restate.ObjectContext) (bool, error) { + // withClass(1:4) highlight-line + tickets, err := restate.Get[[]string](ctx, "tickets") + if err != nil || len(tickets) == 0 { return false, err } - if len(tickets) == 0 { - return false, nil - } - success, err := restate.CallAs[bool](ctx.Service("CheckoutService", "Handle")). - Request(CheckoutRequest{UserId: ctx.Key(), Tickets: []string{"seat2B"}}) + success, err := restate.Service[bool](ctx, "CheckoutService", "Handle"). + Request(CheckoutRequest{UserId: restate.Key(ctx), Tickets: []string{"seat2B"}}) if err != nil { return false, err } if success { // withClass highlight-line - ctx.Clear("tickets") + restate.Clear(ctx, "tickets") } return success, nil @@ -67,25 +59,21 @@ func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, err // // -func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) (restate.Void, error) { - tickets, err := restate.GetAs[[]string](ctx, "tickets") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { - return restate.Void{}, err +func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) error { + tickets, err := restate.Get[[]string](ctx, "tickets") + if err != nil { + return err } ticketI := slices.Index(tickets, ticketId) if ticketI != -1 { tickets = slices.Delete(tickets, ticketI, ticketI+1) - if err := ctx.Set("tickets", tickets); err != nil { - return restate.Void{}, err - } + restate.Set(ctx, "tickets", tickets) - if err := ctx.Object("TicketObject", ticketId, "Unreserve").Send(restate.Void{}, 0); err != nil { - return restate.Void{}, err - } + restate.ObjectSend(ctx, "TicketObject", ticketId, "Unreserve").Send(restate.Void{}) } - return restate.Void{}, nil + return nil } // diff --git a/tutorials/tour-of-restate-go/part3/ticketobject.go b/tutorials/tour-of-restate-go/part3/ticketobject.go index bb3161c2..a031b745 100644 --- a/tutorials/tour-of-restate-go/part3/ticketobject.go +++ b/tutorials/tour-of-restate-go/part3/ticketobject.go @@ -1,8 +1,6 @@ package main import ( - "errors" - "github.com/restatedev/examples/tutorials/tour-of-restate-go/auxiliary" restate "github.com/restatedev/sdk-go" ) @@ -10,14 +8,14 @@ import ( type TicketObject struct{} // -func (TicketObject) Reserve(ctx restate.ObjectContext, _ restate.Void) (bool, error) { - status, err := restate.GetAs[auxiliary.TicketStatus](ctx, "status") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { +func (TicketObject) Reserve(ctx restate.ObjectContext) (bool, error) { + status, err := restate.Get[auxiliary.TicketStatus](ctx, "status") + if err != nil { return false, err } if status == auxiliary.TicketStatusAvailable { - ctx.Set("status", auxiliary.TicketStatusReserved) + restate.Set(ctx, "status", auxiliary.TicketStatusReserved) return true, nil } else { return false, nil @@ -27,33 +25,33 @@ func (TicketObject) Reserve(ctx restate.ObjectContext, _ restate.Void) (bool, er // // -func (TicketObject) Unreserve(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - status, err := restate.GetAs[auxiliary.TicketStatus](ctx, "status") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { - return restate.Void{}, err +func (TicketObject) Unreserve(ctx restate.ObjectContext) error { + status, err := restate.Get[auxiliary.TicketStatus](ctx, "status") + if err != nil { + return err } if status != auxiliary.TicketStatusSold { - ctx.Clear("status") + restate.Clear(ctx, "status") } - return restate.Void{}, nil + return nil } // // -func (TicketObject) MarkAsSold(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - status, err := restate.GetAs[auxiliary.TicketStatus](ctx, "status") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { - return restate.Void{}, err +func (TicketObject) MarkAsSold(ctx restate.ObjectContext) error { + status, err := restate.Get[auxiliary.TicketStatus](ctx, "status") + if err != nil { + return err } if status == auxiliary.TicketStatusReserved { - ctx.Set("status", auxiliary.TicketStatusSold) + restate.Set(ctx, "status", auxiliary.TicketStatusSold) } - return restate.Void{}, nil + return nil } // diff --git a/tutorials/tour-of-restate-go/part4/cartobject.go b/tutorials/tour-of-restate-go/part4/cartobject.go index 4c7e9a75..5070054c 100644 --- a/tutorials/tour-of-restate-go/part4/cartobject.go +++ b/tutorials/tour-of-restate-go/part4/cartobject.go @@ -1,7 +1,6 @@ package main import ( - "errors" "slices" "time" @@ -11,53 +10,44 @@ import ( type CartObject struct{} func (CartObject) AddTicket(ctx restate.ObjectContext, ticketId string) (bool, error) { - reservationSuccess, err := restate.CallAs[bool](ctx.Object("TicketObject", ticketId, "Reserve")).Request(restate.Void{}) + reservationSuccess, err := restate.Object[bool](ctx, "TicketObject", ticketId, "Reserve").Request(restate.Void{}) if err != nil { return false, err } if reservationSuccess { - tickets, err := restate.GetAs[[]string](ctx, "tickets") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { + tickets, err := restate.Get[[]string](ctx, "tickets") + if err != nil { return false, err } tickets = append(tickets, ticketId) - if err := ctx.Set("tickets", tickets); err != nil { - return false, err - } + restate.Set(ctx, "tickets", tickets) - if err := ctx.Object("CartObject", ctx.Key(), "ExpireTicket").Send(ticketId, 15*time.Minute); err != nil { - return false, err - } + restate.ObjectSend(ctx, "CartObject", restate.Key(ctx), "ExpireTicket").Send(ticketId, restate.WithDelay(15*time.Minute)) } return reservationSuccess, nil } // -func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, error) { - tickets, err := restate.GetAs[[]string](ctx, "tickets") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { +func (CartObject) Checkout(ctx restate.ObjectContext) (bool, error) { + tickets, err := restate.Get[[]string](ctx, "tickets") + if err != nil || len(tickets) == 0 { return false, err } - if len(tickets) == 0 { - return false, nil - } - success, err := restate.CallAs[bool](ctx.Service("CheckoutService", "Handle")). - Request(CheckoutRequest{UserId: ctx.Key(), Tickets: []string{"seat2B"}}) + success, err := restate.Service[bool](ctx, "CheckoutService", "Handle"). + Request(CheckoutRequest{UserId: restate.Key(ctx), Tickets: []string{"seat2B"}}) if err != nil { return false, err } if success { - // withClass(1:5) highlight-line + // withClass(1:3) highlight-line for _, ticketId := range tickets { - if err := ctx.Object("TicketObject", ticketId, "MarkAsSold").Send(restate.Void{}, 0); err != nil { - return false, err - } + restate.ObjectSend(ctx, "TicketObject", ticketId, "MarkAsSold").Send(restate.Void{}) } - ctx.Clear("tickets") + restate.Clear(ctx, "tickets") } return success, nil @@ -65,23 +55,19 @@ func (CartObject) Checkout(ctx restate.ObjectContext, _ restate.Void) (bool, err // -func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) (restate.Void, error) { - tickets, err := restate.GetAs[[]string](ctx, "tickets") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { - return restate.Void{}, err +func (CartObject) ExpireTicket(ctx restate.ObjectContext, ticketId string) error { + tickets, err := restate.Get[[]string](ctx, "tickets") + if err != nil { + return err } ticketI := slices.Index(tickets, ticketId) if ticketI != -1 { tickets = slices.Delete(tickets, ticketI, ticketI+1) - if err := ctx.Set("tickets", tickets); err != nil { - return restate.Void{}, err - } + restate.Set(ctx, "tickets", tickets) - if err := ctx.Object("TicketObject", ticketId, "Unreserve").Send(restate.Void{}, 0); err != nil { - return restate.Void{}, err - } + restate.ObjectSend(ctx, "TicketObject", ticketId, "Unreserve").Send(restate.Void{}) } - return restate.Void{}, nil + return nil } diff --git a/tutorials/tour-of-restate-go/part4/checkoutservice.go b/tutorials/tour-of-restate-go/part4/checkoutservice.go index ff8dcf13..47406334 100644 --- a/tutorials/tour-of-restate-go/part4/checkoutservice.go +++ b/tutorials/tour-of-restate-go/part4/checkoutservice.go @@ -16,11 +16,11 @@ type CheckoutRequest struct { func (CheckoutService) Handle(ctx restate.Context, request CheckoutRequest) (bool, error) { totalPrice := len(request.Tickets) * 40 - idempotencyKey := ctx.Rand().UUID().String() - if _, err := restate.RunAs(ctx, func(ctx restate.RunContext) (restate.Void, error) { + idempotencyKey := restate.Rand(ctx).UUID().String() + if _, err := restate.Run(ctx, func(ctx restate.RunContext) (restate.Void, error) { return restate.Void{}, auxiliary.PaymentClient{}.Call(idempotencyKey, totalPrice) }); err != nil { - if _, err := restate.RunAs(ctx, func(ctx restate.RunContext) (bool, error) { + if _, err := restate.Run(ctx, func(ctx restate.RunContext) (bool, error) { return auxiliary.EmailClient{}.NotifyUserOfPaymentFailure(request.UserId) }); err != nil { return false, err @@ -29,7 +29,7 @@ func (CheckoutService) Handle(ctx restate.Context, request CheckoutRequest) (boo return false, nil } - if _, err := restate.RunAs(ctx, func(ctx restate.RunContext) (bool, error) { + if _, err := restate.Run(ctx, func(ctx restate.RunContext) (bool, error) { return auxiliary.EmailClient{}.NotifyUserOfPaymentSuccess(request.UserId) }); err != nil { return false, err diff --git a/tutorials/tour-of-restate-go/part4/ticketobject.go b/tutorials/tour-of-restate-go/part4/ticketobject.go index 2da8281d..a9c620a5 100644 --- a/tutorials/tour-of-restate-go/part4/ticketobject.go +++ b/tutorials/tour-of-restate-go/part4/ticketobject.go @@ -1,50 +1,48 @@ package main import ( - "errors" - "github.com/restatedev/examples/tutorials/tour-of-restate-go/auxiliary" restate "github.com/restatedev/sdk-go" ) type TicketObject struct{} -func (TicketObject) Reserve(ctx restate.ObjectContext, _ restate.Void) (bool, error) { - status, err := restate.GetAs[auxiliary.TicketStatus](ctx, "status") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { +func (TicketObject) Reserve(ctx restate.ObjectContext) (bool, error) { + status, err := restate.Get[auxiliary.TicketStatus](ctx, "status") + if err != nil { return false, err } if status == auxiliary.TicketStatusAvailable { - ctx.Set("status", auxiliary.TicketStatusReserved) + restate.Set(ctx, "status", auxiliary.TicketStatusReserved) return true, nil } else { return false, nil } } -func (TicketObject) Unreserve(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - status, err := restate.GetAs[auxiliary.TicketStatus](ctx, "status") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { - return restate.Void{}, err +func (TicketObject) Unreserve(ctx restate.ObjectContext) error { + status, err := restate.Get[auxiliary.TicketStatus](ctx, "status") + if err != nil { + return err } if status != auxiliary.TicketStatusSold { - ctx.Clear("status") + restate.Clear(ctx, "status") } - return restate.Void{}, nil + return nil } -func (TicketObject) MarkAsSold(ctx restate.ObjectContext, _ restate.Void) (restate.Void, error) { - status, err := restate.GetAs[auxiliary.TicketStatus](ctx, "status") - if err != nil && !errors.Is(err, restate.ErrKeyNotFound) { - return restate.Void{}, err +func (TicketObject) MarkAsSold(ctx restate.ObjectContext) error { + status, err := restate.Get[auxiliary.TicketStatus](ctx, "status") + if err != nil { + return err } if status == auxiliary.TicketStatusReserved { - ctx.Set("status", auxiliary.TicketStatusSold) + restate.Set(ctx, "status", auxiliary.TicketStatusSold) } - return restate.Void{}, nil + return nil }