From e0cd99075a2176f3546a265ce6c96d54112baf44 Mon Sep 17 00:00:00 2001 From: Kevin Webb Date: Tue, 28 Jan 2025 21:40:44 -0500 Subject: [PATCH] add SharedObjectContext example to cart_object.rs SharedObjectContext is missing from the tutorial/example code, so added this CartObject/list handler --- .../src/part4/cart_object.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/rust/tutorials/tour-of-restate-rust/src/part4/cart_object.rs b/rust/tutorials/tour-of-restate-rust/src/part4/cart_object.rs index 825006e0..bf93ae5c 100644 --- a/rust/tutorials/tour-of-restate-rust/src/part4/cart_object.rs +++ b/rust/tutorials/tour-of-restate-rust/src/part4/cart_object.rs @@ -11,6 +11,9 @@ pub(crate) trait CartObject { async fn checkout() -> Result; #[name = "expireTicket"] async fn expire_ticket(ticket_id: String) -> Result<(), HandlerError>; + + #[shared] + async fn list() -> Result; } pub struct CartObjectImpl; @@ -100,4 +103,18 @@ impl CartObject for CartObjectImpl { Ok(()) } + + async fn list( + &self, + ctx: SharedObjectContext<'_> + ) -> Result { + let mut tickets = ctx + .get::>>("tickets") + .await? + .unwrap_or_default() + .into_inner(); + + let tickets_vec: Vec = tickets.into_iter().collect(); + Ok(tickets_vec.join(",")) + } }