From 34d3cd9a5ddb29d8679c611318e8405b1147b463 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Thu, 20 Nov 2025 14:33:28 +0100 Subject: [PATCH 01/12] add test schedule_procedure --- modules/sdk-test-procedure/src/lib.rs | 54 ++++++- sdks/rust/tests/procedure-client/src/main.rs | 28 +++- .../src/module_bindings/mod.rs | 47 +++++- .../proc_inserts_into_table.rs | 95 ++++++++++++ .../module_bindings/proc_inserts_into_type.rs | 18 +++ .../module_bindings/schedule_proc_reducer.rs | 99 ++++++++++++ .../scheduled_proc_procedure.rs | 46 ++++++ .../scheduled_proc_table_table.rs | 142 ++++++++++++++++++ .../scheduled_proc_table_type.rs | 19 +++ sdks/rust/tests/test.rs | 5 + 10 files changed, 549 insertions(+), 4 deletions(-) create mode 100644 sdks/rust/tests/procedure-client/src/module_bindings/proc_inserts_into_table.rs create mode 100644 sdks/rust/tests/procedure-client/src/module_bindings/proc_inserts_into_type.rs create mode 100644 sdks/rust/tests/procedure-client/src/module_bindings/schedule_proc_reducer.rs create mode 100644 sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_procedure.rs create mode 100644 sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_table_table.rs create mode 100644 sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_table_type.rs diff --git a/modules/sdk-test-procedure/src/lib.rs b/modules/sdk-test-procedure/src/lib.rs index 88a45a6a6ea..4e875ca58d2 100644 --- a/modules/sdk-test-procedure/src/lib.rs +++ b/modules/sdk-test-procedure/src/lib.rs @@ -1,4 +1,7 @@ -use spacetimedb::{procedure, table, ProcedureContext, SpacetimeType, Table, TxContext}; +use spacetimedb::{ + duration, procedure, reducer, table, DbContext, ProcedureContext, ReducerContext, ScheduleAt, SpacetimeType, Table, + Timestamp, TxContext, +}; #[derive(SpacetimeType)] struct ReturnStruct { @@ -98,3 +101,52 @@ fn insert_with_tx_rollback(ctx: &mut ProcedureContext) { // Assert that there's not a row. assert_row_count(ctx, 0); } + +/// A reducer that schedules [`scheduled_proc`] via `ScheduledProcTable`. +#[reducer] +fn schedule_proc(ctx: &ReducerContext) { + // Schedule the procedure to run in 1s. + ctx.db().scheduled_proc_table().insert(ScheduledProcTable { + scheduled_id: 0, + scheduled_at: duration!("1000ms").into(), + // Store the timestamp at which this reducer was called. + // In tests, we'll compare this with the timestamp the procedure was called. + reducer_ts: ctx.timestamp, + x: 42, + y: 24, + }); +} + +#[table(name = scheduled_proc_table, scheduled(scheduled_proc))] +struct ScheduledProcTable { + #[primary_key] + #[auto_inc] + scheduled_id: u64, + scheduled_at: ScheduleAt, + reducer_ts: Timestamp, + x: u8, + y: u8, +} + +/// A procedure that should be called 1s after `schedule_proc`. +#[procedure] +fn scheduled_proc(ctx: &mut ProcedureContext, data: ScheduledProcTable) { + let ScheduledProcTable { reducer_ts, x, y, .. } = data; + let procedure_ts = ctx.timestamp; + ctx.with_tx(|ctx| { + ctx.db().proc_inserts_into().insert(ProcInsertsInto { + reducer_ts, + procedure_ts, + x, + y, + }) + }); +} + +#[table(name = proc_inserts_into, public)] +struct ProcInsertsInto { + reducer_ts: Timestamp, + procedure_ts: Timestamp, + x: u8, + y: u8, +} diff --git a/sdks/rust/tests/procedure-client/src/main.rs b/sdks/rust/tests/procedure-client/src/main.rs index 3dde568a2b9..f7cbe7e6801 100644 --- a/sdks/rust/tests/procedure-client/src/main.rs +++ b/sdks/rust/tests/procedure-client/src/main.rs @@ -43,6 +43,7 @@ fn main() { "procedure-http-err" => exec_procedure_http_err(), "insert-with-tx-commit" => exec_insert_with_tx_commit(), "insert-with-tx-rollback" => exec_insert_with_tx_rollback(), + "schedule-procedure" => exec_schedule_procedure(), _ => panic!("Unknown test: {test}"), } } @@ -97,7 +98,7 @@ fn connect_then( } /// A query that subscribes to all rows from all tables. -const SUBSCRIBE_ALL: &[&str] = &["SELECT * FROM my_table;"]; +const SUBSCRIBE_ALL: &[&str] = &["SELECT * FROM my_table;", "SELECT * FROM proc_inserts_into;"]; fn subscribe_all_then(ctx: &impl RemoteDbContext, callback: impl FnOnce(&SubscriptionEventContext) + Send + 'static) { subscribe_these_then(ctx, SUBSCRIBE_ALL, callback) @@ -310,5 +311,30 @@ fn exec_procedure_http_err() { }) } }); + + test_counter.wait_for_all(); +} + +fn exec_schedule_procedure() { + let test_counter = TestCounter::new(); + let sub_applied_nothing_result = test_counter.add_test("on_subscription_applied_nothing"); + + let mut callback_result = Some(test_counter.add_test("insert_with_tx_commit_callback")); + + connect_then(&test_counter, { + move |ctx| { + ctx.db().proc_inserts_into().on_insert(move |_, row| { + assert_eq!(row.x, 24); + assert_eq!(row.y, 42); + (callback_result.take().unwrap())(Ok(())); + }); + + subscribe_all_then(ctx, move |ctx| { + sub_applied_nothing_result(assert_all_tables_empty(ctx)); + ctx.reducers.schedule_proc().unwrap(); + }); + } + }); + test_counter.wait_for_all(); } diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs b/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs index f6c007845d4..d6df0c17647 100644 --- a/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.8.0 (commit fd75c7fbf57e943785c09dc91df0697844ff4dad). +// This was generated using spacetimedb cli version 1.8.0 (commit 1b87bac11aa139c9d710c173abbb12fcb2d985d1). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; @@ -11,6 +11,8 @@ pub mod insert_with_tx_rollback_procedure; pub mod invalid_request_procedure; pub mod my_table_table; pub mod my_table_type; +pub mod proc_inserts_into_table; +pub mod proc_inserts_into_type; pub mod read_my_schema_procedure; pub mod return_enum_a_procedure; pub mod return_enum_b_procedure; @@ -18,6 +20,10 @@ pub mod return_enum_type; pub mod return_primitive_procedure; pub mod return_struct_procedure; pub mod return_struct_type; +pub mod schedule_proc_reducer; +pub mod scheduled_proc_procedure; +pub mod scheduled_proc_table_table; +pub mod scheduled_proc_table_type; pub mod will_panic_procedure; pub use insert_with_tx_commit_procedure::insert_with_tx_commit; @@ -25,6 +31,8 @@ pub use insert_with_tx_rollback_procedure::insert_with_tx_rollback; pub use invalid_request_procedure::invalid_request; pub use my_table_table::*; pub use my_table_type::MyTable; +pub use proc_inserts_into_table::*; +pub use proc_inserts_into_type::ProcInsertsInto; pub use read_my_schema_procedure::read_my_schema; pub use return_enum_a_procedure::return_enum_a; pub use return_enum_b_procedure::return_enum_b; @@ -32,6 +40,10 @@ pub use return_enum_type::ReturnEnum; pub use return_primitive_procedure::return_primitive; pub use return_struct_procedure::return_struct; pub use return_struct_type::ReturnStruct; +pub use schedule_proc_reducer::{schedule_proc, set_flags_for_schedule_proc, ScheduleProcCallbackId}; +pub use scheduled_proc_procedure::scheduled_proc; +pub use scheduled_proc_table_table::*; +pub use scheduled_proc_table_type::ScheduledProcTable; pub use will_panic_procedure::will_panic; #[derive(Clone, PartialEq, Debug)] @@ -41,7 +53,9 @@ pub use will_panic_procedure::will_panic; /// Contained within a [`__sdk::ReducerEvent`] in [`EventContext`]s for reducer events /// to indicate which reducer caused the event. -pub enum Reducer {} +pub enum Reducer { + ScheduleProc, +} impl __sdk::InModule for Reducer { type Module = RemoteModule; @@ -50,6 +64,7 @@ impl __sdk::InModule for Reducer { impl __sdk::Reducer for Reducer { fn reducer_name(&self) -> &'static str { match self { + Reducer::ScheduleProc => "schedule_proc", _ => unreachable!(), } } @@ -58,6 +73,11 @@ impl TryFrom<__ws::ReducerCallInfo<__ws::BsatnFormat>> for Reducer { type Error = __sdk::Error; fn try_from(value: __ws::ReducerCallInfo<__ws::BsatnFormat>) -> __sdk::Result { match &value.reducer_name[..] { + "schedule_proc" => Ok(__sdk::parse_reducer_args::( + "schedule_proc", + &value.args, + )? + .into()), unknown => Err(__sdk::InternalError::unknown_name("reducer", unknown, "ReducerCallInfo").into()), } } @@ -68,6 +88,8 @@ impl TryFrom<__ws::ReducerCallInfo<__ws::BsatnFormat>> for Reducer { #[doc(hidden)] pub struct DbUpdate { my_table: __sdk::TableUpdate, + proc_inserts_into: __sdk::TableUpdate, + scheduled_proc_table: __sdk::TableUpdate, } impl TryFrom<__ws::DatabaseUpdate<__ws::BsatnFormat>> for DbUpdate { @@ -79,6 +101,12 @@ impl TryFrom<__ws::DatabaseUpdate<__ws::BsatnFormat>> for DbUpdate { "my_table" => db_update .my_table .append(my_table_table::parse_table_update(table_update)?), + "proc_inserts_into" => db_update + .proc_inserts_into + .append(proc_inserts_into_table::parse_table_update(table_update)?), + "scheduled_proc_table" => db_update + .scheduled_proc_table + .append(scheduled_proc_table_table::parse_table_update(table_update)?), unknown => { return Err(__sdk::InternalError::unknown_name("table", unknown, "DatabaseUpdate").into()); @@ -98,6 +126,11 @@ impl __sdk::DbUpdate for DbUpdate { let mut diff = AppliedDiff::default(); diff.my_table = cache.apply_diff_to_table::("my_table", &self.my_table); + diff.proc_inserts_into = + cache.apply_diff_to_table::("proc_inserts_into", &self.proc_inserts_into); + diff.scheduled_proc_table = cache + .apply_diff_to_table::("scheduled_proc_table", &self.scheduled_proc_table) + .with_updates_by_pk(|row| &row.scheduled_id); diff } @@ -108,6 +141,8 @@ impl __sdk::DbUpdate for DbUpdate { #[doc(hidden)] pub struct AppliedDiff<'r> { my_table: __sdk::TableAppliedDiff<'r, MyTable>, + proc_inserts_into: __sdk::TableAppliedDiff<'r, ProcInsertsInto>, + scheduled_proc_table: __sdk::TableAppliedDiff<'r, ScheduledProcTable>, __unused: std::marker::PhantomData<&'r ()>, } @@ -118,6 +153,12 @@ impl __sdk::InModule for AppliedDiff<'_> { impl<'r> __sdk::AppliedDiff<'r> for AppliedDiff<'r> { fn invoke_row_callbacks(&self, event: &EventContext, callbacks: &mut __sdk::DbCallbacks) { callbacks.invoke_table_row_callbacks::("my_table", &self.my_table, event); + callbacks.invoke_table_row_callbacks::("proc_inserts_into", &self.proc_inserts_into, event); + callbacks.invoke_table_row_callbacks::( + "scheduled_proc_table", + &self.scheduled_proc_table, + event, + ); } } @@ -838,5 +879,7 @@ impl __sdk::SpacetimeModule for RemoteModule { fn register_tables(client_cache: &mut __sdk::ClientCache) { my_table_table::register_table(client_cache); + proc_inserts_into_table::register_table(client_cache); + scheduled_proc_table_table::register_table(client_cache); } } diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/proc_inserts_into_table.rs b/sdks/rust/tests/procedure-client/src/module_bindings/proc_inserts_into_table.rs new file mode 100644 index 00000000000..afd9c479d80 --- /dev/null +++ b/sdks/rust/tests/procedure-client/src/module_bindings/proc_inserts_into_table.rs @@ -0,0 +1,95 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use super::proc_inserts_into_type::ProcInsertsInto; +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +/// Table handle for the table `proc_inserts_into`. +/// +/// Obtain a handle from the [`ProcInsertsIntoTableAccess::proc_inserts_into`] method on [`super::RemoteTables`], +/// like `ctx.db.proc_inserts_into()`. +/// +/// Users are encouraged not to explicitly reference this type, +/// but to directly chain method calls, +/// like `ctx.db.proc_inserts_into().on_insert(...)`. +pub struct ProcInsertsIntoTableHandle<'ctx> { + imp: __sdk::TableHandle, + ctx: std::marker::PhantomData<&'ctx super::RemoteTables>, +} + +#[allow(non_camel_case_types)] +/// Extension trait for access to the table `proc_inserts_into`. +/// +/// Implemented for [`super::RemoteTables`]. +pub trait ProcInsertsIntoTableAccess { + #[allow(non_snake_case)] + /// Obtain a [`ProcInsertsIntoTableHandle`], which mediates access to the table `proc_inserts_into`. + fn proc_inserts_into(&self) -> ProcInsertsIntoTableHandle<'_>; +} + +impl ProcInsertsIntoTableAccess for super::RemoteTables { + fn proc_inserts_into(&self) -> ProcInsertsIntoTableHandle<'_> { + ProcInsertsIntoTableHandle { + imp: self.imp.get_table::("proc_inserts_into"), + ctx: std::marker::PhantomData, + } + } +} + +pub struct ProcInsertsIntoInsertCallbackId(__sdk::CallbackId); +pub struct ProcInsertsIntoDeleteCallbackId(__sdk::CallbackId); + +impl<'ctx> __sdk::Table for ProcInsertsIntoTableHandle<'ctx> { + type Row = ProcInsertsInto; + type EventContext = super::EventContext; + + fn count(&self) -> u64 { + self.imp.count() + } + fn iter(&self) -> impl Iterator + '_ { + self.imp.iter() + } + + type InsertCallbackId = ProcInsertsIntoInsertCallbackId; + + fn on_insert( + &self, + callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static, + ) -> ProcInsertsIntoInsertCallbackId { + ProcInsertsIntoInsertCallbackId(self.imp.on_insert(Box::new(callback))) + } + + fn remove_on_insert(&self, callback: ProcInsertsIntoInsertCallbackId) { + self.imp.remove_on_insert(callback.0) + } + + type DeleteCallbackId = ProcInsertsIntoDeleteCallbackId; + + fn on_delete( + &self, + callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static, + ) -> ProcInsertsIntoDeleteCallbackId { + ProcInsertsIntoDeleteCallbackId(self.imp.on_delete(Box::new(callback))) + } + + fn remove_on_delete(&self, callback: ProcInsertsIntoDeleteCallbackId) { + self.imp.remove_on_delete(callback.0) + } +} + +#[doc(hidden)] +pub(super) fn register_table(client_cache: &mut __sdk::ClientCache) { + let _table = client_cache.get_or_make_table::("proc_inserts_into"); +} + +#[doc(hidden)] +pub(super) fn parse_table_update( + raw_updates: __ws::TableUpdate<__ws::BsatnFormat>, +) -> __sdk::Result<__sdk::TableUpdate> { + __sdk::TableUpdate::parse_table_update(raw_updates).map_err(|e| { + __sdk::InternalError::failed_parse("TableUpdate", "TableUpdate") + .with_cause(e) + .into() + }) +} diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/proc_inserts_into_type.rs b/sdks/rust/tests/procedure-client/src/module_bindings/proc_inserts_into_type.rs new file mode 100644 index 00000000000..20ac4c3ce68 --- /dev/null +++ b/sdks/rust/tests/procedure-client/src/module_bindings/proc_inserts_into_type.rs @@ -0,0 +1,18 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct ProcInsertsInto { + pub reducer_ts: __sdk::Timestamp, + pub procedure_ts: __sdk::Timestamp, + pub x: u8, + pub y: u8, +} + +impl __sdk::InModule for ProcInsertsInto { + type Module = super::RemoteModule; +} diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/schedule_proc_reducer.rs b/sdks/rust/tests/procedure-client/src/module_bindings/schedule_proc_reducer.rs new file mode 100644 index 00000000000..845eb126ad5 --- /dev/null +++ b/sdks/rust/tests/procedure-client/src/module_bindings/schedule_proc_reducer.rs @@ -0,0 +1,99 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub(super) struct ScheduleProcArgs {} + +impl From for super::Reducer { + fn from(args: ScheduleProcArgs) -> Self { + Self::ScheduleProc + } +} + +impl __sdk::InModule for ScheduleProcArgs { + type Module = super::RemoteModule; +} + +pub struct ScheduleProcCallbackId(__sdk::CallbackId); + +#[allow(non_camel_case_types)] +/// Extension trait for access to the reducer `schedule_proc`. +/// +/// Implemented for [`super::RemoteReducers`]. +pub trait schedule_proc { + /// Request that the remote module invoke the reducer `schedule_proc` to run as soon as possible. + /// + /// This method returns immediately, and errors only if we are unable to send the request. + /// The reducer will run asynchronously in the future, + /// and its status can be observed by listening for [`Self::on_schedule_proc`] callbacks. + fn schedule_proc(&self) -> __sdk::Result<()>; + /// Register a callback to run whenever we are notified of an invocation of the reducer `schedule_proc`. + /// + /// Callbacks should inspect the [`__sdk::ReducerEvent`] contained in the [`super::ReducerEventContext`] + /// to determine the reducer's status. + /// + /// The returned [`ScheduleProcCallbackId`] can be passed to [`Self::remove_on_schedule_proc`] + /// to cancel the callback. + fn on_schedule_proc( + &self, + callback: impl FnMut(&super::ReducerEventContext) + Send + 'static, + ) -> ScheduleProcCallbackId; + /// Cancel a callback previously registered by [`Self::on_schedule_proc`], + /// causing it not to run in the future. + fn remove_on_schedule_proc(&self, callback: ScheduleProcCallbackId); +} + +impl schedule_proc for super::RemoteReducers { + fn schedule_proc(&self) -> __sdk::Result<()> { + self.imp.call_reducer("schedule_proc", ScheduleProcArgs {}) + } + fn on_schedule_proc( + &self, + mut callback: impl FnMut(&super::ReducerEventContext) + Send + 'static, + ) -> ScheduleProcCallbackId { + ScheduleProcCallbackId(self.imp.on_reducer( + "schedule_proc", + Box::new(move |ctx: &super::ReducerEventContext| { + let super::ReducerEventContext { + event: + __sdk::ReducerEvent { + reducer: super::Reducer::ScheduleProc {}, + .. + }, + .. + } = ctx + else { + unreachable!() + }; + callback(ctx) + }), + )) + } + fn remove_on_schedule_proc(&self, callback: ScheduleProcCallbackId) { + self.imp.remove_on_reducer("schedule_proc", callback.0) + } +} + +#[allow(non_camel_case_types)] +#[doc(hidden)] +/// Extension trait for setting the call-flags for the reducer `schedule_proc`. +/// +/// Implemented for [`super::SetReducerFlags`]. +/// +/// This type is currently unstable and may be removed without a major version bump. +pub trait set_flags_for_schedule_proc { + /// Set the call-reducer flags for the reducer `schedule_proc` to `flags`. + /// + /// This type is currently unstable and may be removed without a major version bump. + fn schedule_proc(&self, flags: __ws::CallReducerFlags); +} + +impl set_flags_for_schedule_proc for super::SetReducerFlags { + fn schedule_proc(&self, flags: __ws::CallReducerFlags) { + self.imp.set_call_reducer_flags("schedule_proc", flags); + } +} diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_procedure.rs b/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_procedure.rs new file mode 100644 index 00000000000..124f51162f0 --- /dev/null +++ b/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_procedure.rs @@ -0,0 +1,46 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +use super::scheduled_proc_table_type::ScheduledProcTable; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +struct ScheduledProcArgs { + pub data: ScheduledProcTable, +} + +impl __sdk::InModule for ScheduledProcArgs { + type Module = super::RemoteModule; +} + +#[allow(non_camel_case_types)] +/// Extension trait for access to the procedure `scheduled_proc`. +/// +/// Implemented for [`super::RemoteProcedures`]. +pub trait scheduled_proc { + fn scheduled_proc(&self, data: ScheduledProcTable) { + self.scheduled_proc_then(data, |_, _| {}); + } + + fn scheduled_proc_then( + &self, + data: ScheduledProcTable, + + __callback: impl FnOnce(&super::ProcedureEventContext, Result<(), __sdk::InternalError>) + Send + 'static, + ); +} + +impl scheduled_proc for super::RemoteProcedures { + fn scheduled_proc_then( + &self, + data: ScheduledProcTable, + + __callback: impl FnOnce(&super::ProcedureEventContext, Result<(), __sdk::InternalError>) + Send + 'static, + ) { + self.imp + .invoke_procedure_with_callback::<_, ()>("scheduled_proc", ScheduledProcArgs { data }, __callback); + } +} diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_table_table.rs b/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_table_table.rs new file mode 100644 index 00000000000..671ddcbe020 --- /dev/null +++ b/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_table_table.rs @@ -0,0 +1,142 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use super::scheduled_proc_table_type::ScheduledProcTable; +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +/// Table handle for the table `scheduled_proc_table`. +/// +/// Obtain a handle from the [`ScheduledProcTableTableAccess::scheduled_proc_table`] method on [`super::RemoteTables`], +/// like `ctx.db.scheduled_proc_table()`. +/// +/// Users are encouraged not to explicitly reference this type, +/// but to directly chain method calls, +/// like `ctx.db.scheduled_proc_table().on_insert(...)`. +pub struct ScheduledProcTableTableHandle<'ctx> { + imp: __sdk::TableHandle, + ctx: std::marker::PhantomData<&'ctx super::RemoteTables>, +} + +#[allow(non_camel_case_types)] +/// Extension trait for access to the table `scheduled_proc_table`. +/// +/// Implemented for [`super::RemoteTables`]. +pub trait ScheduledProcTableTableAccess { + #[allow(non_snake_case)] + /// Obtain a [`ScheduledProcTableTableHandle`], which mediates access to the table `scheduled_proc_table`. + fn scheduled_proc_table(&self) -> ScheduledProcTableTableHandle<'_>; +} + +impl ScheduledProcTableTableAccess for super::RemoteTables { + fn scheduled_proc_table(&self) -> ScheduledProcTableTableHandle<'_> { + ScheduledProcTableTableHandle { + imp: self.imp.get_table::("scheduled_proc_table"), + ctx: std::marker::PhantomData, + } + } +} + +pub struct ScheduledProcTableInsertCallbackId(__sdk::CallbackId); +pub struct ScheduledProcTableDeleteCallbackId(__sdk::CallbackId); + +impl<'ctx> __sdk::Table for ScheduledProcTableTableHandle<'ctx> { + type Row = ScheduledProcTable; + type EventContext = super::EventContext; + + fn count(&self) -> u64 { + self.imp.count() + } + fn iter(&self) -> impl Iterator + '_ { + self.imp.iter() + } + + type InsertCallbackId = ScheduledProcTableInsertCallbackId; + + fn on_insert( + &self, + callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static, + ) -> ScheduledProcTableInsertCallbackId { + ScheduledProcTableInsertCallbackId(self.imp.on_insert(Box::new(callback))) + } + + fn remove_on_insert(&self, callback: ScheduledProcTableInsertCallbackId) { + self.imp.remove_on_insert(callback.0) + } + + type DeleteCallbackId = ScheduledProcTableDeleteCallbackId; + + fn on_delete( + &self, + callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static, + ) -> ScheduledProcTableDeleteCallbackId { + ScheduledProcTableDeleteCallbackId(self.imp.on_delete(Box::new(callback))) + } + + fn remove_on_delete(&self, callback: ScheduledProcTableDeleteCallbackId) { + self.imp.remove_on_delete(callback.0) + } +} + +#[doc(hidden)] +pub(super) fn register_table(client_cache: &mut __sdk::ClientCache) { + let _table = client_cache.get_or_make_table::("scheduled_proc_table"); + _table.add_unique_constraint::("scheduled_id", |row| &row.scheduled_id); +} +pub struct ScheduledProcTableUpdateCallbackId(__sdk::CallbackId); + +impl<'ctx> __sdk::TableWithPrimaryKey for ScheduledProcTableTableHandle<'ctx> { + type UpdateCallbackId = ScheduledProcTableUpdateCallbackId; + + fn on_update( + &self, + callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static, + ) -> ScheduledProcTableUpdateCallbackId { + ScheduledProcTableUpdateCallbackId(self.imp.on_update(Box::new(callback))) + } + + fn remove_on_update(&self, callback: ScheduledProcTableUpdateCallbackId) { + self.imp.remove_on_update(callback.0) + } +} + +#[doc(hidden)] +pub(super) fn parse_table_update( + raw_updates: __ws::TableUpdate<__ws::BsatnFormat>, +) -> __sdk::Result<__sdk::TableUpdate> { + __sdk::TableUpdate::parse_table_update(raw_updates).map_err(|e| { + __sdk::InternalError::failed_parse("TableUpdate", "TableUpdate") + .with_cause(e) + .into() + }) +} + +/// Access to the `scheduled_id` unique index on the table `scheduled_proc_table`, +/// which allows point queries on the field of the same name +/// via the [`ScheduledProcTableScheduledIdUnique::find`] method. +/// +/// Users are encouraged not to explicitly reference this type, +/// but to directly chain method calls, +/// like `ctx.db.scheduled_proc_table().scheduled_id().find(...)`. +pub struct ScheduledProcTableScheduledIdUnique<'ctx> { + imp: __sdk::UniqueConstraintHandle, + phantom: std::marker::PhantomData<&'ctx super::RemoteTables>, +} + +impl<'ctx> ScheduledProcTableTableHandle<'ctx> { + /// Get a handle on the `scheduled_id` unique index on the table `scheduled_proc_table`. + pub fn scheduled_id(&self) -> ScheduledProcTableScheduledIdUnique<'ctx> { + ScheduledProcTableScheduledIdUnique { + imp: self.imp.get_unique_constraint::("scheduled_id"), + phantom: std::marker::PhantomData, + } + } +} + +impl<'ctx> ScheduledProcTableScheduledIdUnique<'ctx> { + /// Find the subscribed row whose `scheduled_id` column value is equal to `col_val`, + /// if such a row is present in the client cache. + pub fn find(&self, col_val: &u64) -> Option { + self.imp.find(col_val) + } +} diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_table_type.rs b/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_table_type.rs new file mode 100644 index 00000000000..ff2c2b12696 --- /dev/null +++ b/sdks/rust/tests/procedure-client/src/module_bindings/scheduled_proc_table_type.rs @@ -0,0 +1,19 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct ScheduledProcTable { + pub scheduled_id: u64, + pub scheduled_at: __sdk::ScheduleAt, + pub reducer_ts: __sdk::Timestamp, + pub x: u8, + pub y: u8, +} + +impl __sdk::InModule for ScheduledProcTable { + type Module = super::RemoteModule; +} diff --git a/sdks/rust/tests/test.rs b/sdks/rust/tests/test.rs index 5e532e00522..37f46a5208b 100644 --- a/sdks/rust/tests/test.rs +++ b/sdks/rust/tests/test.rs @@ -323,6 +323,11 @@ macro_rules! procedure_tests { fn http_err() { make_test("procedure-http-err").run() } + + #[test] + fn schedule_procedure() { + make_test("schedule-procedure").run() + } } }; } From 9623c53972334bce906da217f3c49776debd2abe Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Thu, 20 Nov 2025 18:18:32 +0100 Subject: [PATCH 02/12] preparatory cleanup before enabling scheduled procedures --- crates/core/src/host/scheduler.rs | 115 ++++++++++++++++-------------- 1 file changed, 62 insertions(+), 53 deletions(-) diff --git a/crates/core/src/host/scheduler.rs b/crates/core/src/host/scheduler.rs index 7fd205aa34b..2a7fa9db624 100644 --- a/crates/core/src/host/scheduler.rs +++ b/crates/core/src/host/scheduler.rs @@ -7,8 +7,11 @@ use rustc_hash::FxHashMap; use spacetimedb_client_api_messages::energy::EnergyQuanta; use spacetimedb_lib::scheduler::ScheduleAt; use spacetimedb_lib::Timestamp; +use spacetimedb_primitives::ReducerId; use spacetimedb_primitives::{ColId, TableId}; use spacetimedb_sats::{bsatn::ToBsatn as _, AlgebraicValue}; +use spacetimedb_schema::def::deserialize::ArgsSeed; +use spacetimedb_schema::def::ReducerDef; use spacetimedb_table::table::RowRef; use tokio::sync::mpsc; use tokio::time::Instant; @@ -28,11 +31,11 @@ use spacetimedb_datastore::system_tables::{StFields, StScheduledFields, ST_SCHED use spacetimedb_datastore::traits::IsolationLevel; #[derive(Copy, Clone, Eq, PartialEq, Hash)] -pub struct ScheduledReducerId { - /// The ID of the table whose rows hold the scheduled reducers. - /// This table should have a entry in `ST_SCHEDULED`. +pub struct ScheduledFunctionId { + /// The ID of the table whose rows hold the scheduled reducers or procedures. + /// This table should have an entry in `ST_SCHEDULED`. table_id: TableId, - /// The particular schedule row in the reducer scheduling table referred to by `self.table_id`. + /// The particular schedule row in the scheduling table referred to by `self.table_id`. schedule_id: u64, // These may seem redundant, but they're actually free - they fit in the struct padding. // `scheduled_id: u64, table_id: u32, id_column: u16, at_column: u16` == 16 bytes, same as @@ -43,7 +46,7 @@ pub struct ScheduledReducerId { at_column: ColId, } -spacetimedb_table::static_assert_size!(ScheduledReducerId, 16); +spacetimedb_table::static_assert_size!(ScheduledFunctionId, 16); enum MsgOrExit { Msg(T), @@ -52,20 +55,20 @@ enum MsgOrExit { enum SchedulerMessage { Schedule { - id: ScheduledReducerId, + id: ScheduledFunctionId, /// The timestamp we'll tell the reducer it is. effective_at: Timestamp, /// The actual instant we're scheduling for. real_at: Instant, }, ScheduleImmediate { - reducer_name: String, + function_name: String, args: FunctionArgs, }, } -pub struct ScheduledReducer { - reducer: Box, +pub struct ScheduledFunction { + function: Box, bsatn_args: Vec, } @@ -121,7 +124,7 @@ impl SchedulerStarter { // calculate duration left to call the scheduled reducer let duration = schedule_at.to_duration_from(now_ts); let at = schedule_at.to_timestamp_from(now_ts); - let id = ScheduledReducerId { + let id = ScheduledFunctionId { table_id, schedule_id, id_column, @@ -130,7 +133,7 @@ impl SchedulerStarter { let key = queue.insert_at(QueueItem::Id { id, at }, now_instant + duration); // This should never happen as duplicate entries should be gated by unique - // constraint voilation in scheduled tables. + // constraint violation in scheduled tables. if key_map.insert(id, key).is_some() { return Err(anyhow!( "Duplicate key found in scheduler queue: table_id {}, schedule_id {}", @@ -195,9 +198,9 @@ pub enum ScheduleError { } impl Scheduler { - /// Schedule a reducer to run from a scheduled table. + /// Schedule a reducer/procedure to run from a scheduled table. /// - /// `reducer_start` is the timestamp of the start of the current reducer. + /// `fn_start` is the timestamp of the start of the current reducer/procedure. pub(super) fn schedule( &self, table_id: TableId, @@ -205,11 +208,14 @@ impl Scheduler { schedule_at: ScheduleAt, id_column: ColId, at_column: ColId, - reducer_start: Timestamp, + fn_start: Timestamp, ) -> Result<(), ScheduleError> { // if `Timestamp::now()` is properly monotonic, use it; otherwise, use // the start of the reducer run as "now" for purposes of scheduling - let now = reducer_start.max(Timestamp::now()); + // TODO(procedure-tx): when we do `with_tx` in a procedure, + // it inherits the timestamp of the procedure, + // which could become a problem here for long running procedures. + let now = fn_start.max(Timestamp::now()); // Check that `at` is within `tokio_utils::time::DelayQueue`'s // accepted time-range. @@ -229,7 +235,7 @@ impl Scheduler { // if the actor has exited, it's fine to ignore; it means that the host actor calling // schedule will exit soon as well, and it'll be scheduled to run when the module host restarts let _ = self.tx.send(MsgOrExit::Msg(SchedulerMessage::Schedule { - id: ScheduledReducerId { + id: ScheduledFunctionId { table_id, schedule_id, id_column, @@ -242,9 +248,9 @@ impl Scheduler { Ok(()) } - pub fn volatile_nonatomic_schedule_immediate(&self, reducer_name: String, args: FunctionArgs) { + pub fn volatile_nonatomic_schedule_immediate(&self, function_name: String, args: FunctionArgs) { let _ = self.tx.send(MsgOrExit::Msg(SchedulerMessage::ScheduleImmediate { - reducer_name, + function_name, args, })); } @@ -261,13 +267,13 @@ impl Scheduler { struct SchedulerActor { rx: mpsc::UnboundedReceiver>, queue: DelayQueue, - key_map: FxHashMap, + key_map: FxHashMap, module_host: WeakModuleHost, } pub(crate) enum QueueItem { - Id { id: ScheduledReducerId, at: Timestamp }, - VolatileNonatomicImmediate { reducer_name: String, args: FunctionArgs }, + Id { id: ScheduledFunctionId, at: Timestamp }, + VolatileNonatomicImmediate { function_name: String, args: FunctionArgs }, } #[cfg(target_pointer_width = "64")] @@ -304,9 +310,9 @@ impl SchedulerActor { let key = self.queue.insert_at(QueueItem::Id { id, at: effective_at }, real_at); self.key_map.insert(id, key); } - SchedulerMessage::ScheduleImmediate { reducer_name, args } => { + SchedulerMessage::ScheduleImmediate { function_name, args } => { self.queue.insert( - QueueItem::VolatileNonatomicImmediate { reducer_name, args }, + QueueItem::VolatileNonatomicImmediate { function_name, args }, Duration::ZERO, ); } @@ -332,43 +338,44 @@ impl SchedulerActor { let res = tokio::spawn(async move { module_host.call_scheduled_reducer(item).await }).await; match res { - // if we didn't actually call the reducer because the module exited or it was already deleted, leave - // the ScheduledReducer in the database for when the module restarts + // If we didn't actually call the function + // because the module exited or it was already deleted, + // leave the `ScheduledFunction` in the database for when the module restarts. Ok(Err(ReducerCallError::NoSuchModule(_)) | Err(ReducerCallError::ScheduleReducerNotFound)) => {} Ok(Ok((_, ts))) => { if let Some(id) = id { - let _ = self.delete_scheduled_reducer_row(&db, id, module_host_clone, ts).await; + let _ = self.delete_scheduled_function_row(&db, id, module_host_clone, ts).await; } } - // delete the scheduled reducer row if its not repeated reducer + // Delete the scheduled function row if its not repeated function. Ok(_) | Err(_) => { if let Some(id) = id { // TODO: Handle errors here? let _ = self - .delete_scheduled_reducer_row(&db, id, module_host_clone, Timestamp::now()) + .delete_scheduled_function_row(&db, id, module_host_clone, Timestamp::now()) .await; } } } if let Err(e) = res { - log::error!("invoking scheduled reducer failed: {e:#}"); + log::error!("invoking scheduled function failed: {e:#}"); }; } - async fn delete_scheduled_reducer_row( + async fn delete_scheduled_function_row( &mut self, db: &RelationalDB, - id: ScheduledReducerId, + id: ScheduledFunctionId, module_host: ModuleHost, ts: Timestamp, ) -> anyhow::Result<()> { let host_clone = module_host.clone(); let db = db.clone(); let schedule_at = host_clone - .on_module_thread("delete_scheduled_reducer_row", move || { + .on_module_thread("delete_scheduled_function_row", move || { let mut tx = db.begin_mut_tx(IsolationLevel::Serializable, Workload::Internal); match get_schedule_row_mut(&tx, &db, id) { @@ -426,19 +433,16 @@ pub(crate) fn handle_queued_call_reducer_params( let Ok(schedule_row) = get_schedule_row_mut(tx, db, id) else { // if the row is not found, it means the schedule is cancelled by the user log::debug!( - "table row corresponding to yield scheduler id not found: tableid {}, schedulerId {}", + "table row corresponding to yield scheduler id not found: table_id {}, scheduler_id {}", id.table_id, id.schedule_id ); return Ok(None); }; - let ScheduledReducer { reducer, bsatn_args } = process_schedule(tx, db, id.table_id, &schedule_row)?; + let ScheduledFunction { function, bsatn_args } = process_schedule(tx, db, id.table_id, &schedule_row)?; - let (reducer_id, reducer_seed) = module_info - .module_def - .reducer_arg_deserialize_seed(&reducer[..]) - .ok_or_else(|| anyhow!("Reducer not found: {reducer}"))?; + let (reducer_id, reducer_seed) = find_reducer(module_info, &function)?; let reducer_args = FunctionArgs::Bsatn(bsatn_args.into()).into_tuple(reducer_seed)?; @@ -453,11 +457,8 @@ pub(crate) fn handle_queued_call_reducer_params( reducer_args, ))) } - QueueItem::VolatileNonatomicImmediate { reducer_name, args } => { - let (reducer_id, reducer_seed) = module_info - .module_def - .reducer_arg_deserialize_seed(&reducer_name[..]) - .ok_or_else(|| anyhow!("Reducer not found: {reducer_name}"))?; + QueueItem::VolatileNonatomicImmediate { function_name, args } => { + let (reducer_id, reducer_seed) = find_reducer(module_info, &function_name)?; let reducer_args = args.into_tuple(reducer_seed)?; Ok(Some(CallReducerParams::from_system( @@ -470,6 +471,13 @@ pub(crate) fn handle_queued_call_reducer_params( } } +fn find_reducer<'a>(module_info: &'a ModuleInfo, name: &str) -> anyhow::Result<(ReducerId, ArgsSeed<'a, ReducerDef>)> { + module_info + .module_def + .reducer_arg_deserialize_seed(name) + .ok_or_else(|| anyhow!("Reducer not found: {name}")) +} + fn commit_and_broadcast_deletion_event(tx: MutTxId, module_host: ModuleHost) { let caller_identity = module_host.info().database_identity; @@ -495,40 +503,41 @@ fn commit_and_broadcast_deletion_event(tx: MutTxId, module_host: ModuleHost) { } } -/// Generate `ScheduledReducer` for given `ScheduledReducerId` +/// Generate [`ScheduledFunction`] for given [`ScheduledFunctionId`]. fn process_schedule( tx: &MutTxId, db: &RelationalDB, table_id: TableId, schedule_row: &RowRef<'_>, -) -> Result { - // get reducer name from `ST_SCHEDULED` table +) -> Result { + // Get reducer name from `ST_SCHEDULED` table. let table_id_col = StScheduledFields::TableId.col_id(); - let reducer_name_col = StScheduledFields::ReducerName.col_id(); + let function_name_col = StScheduledFields::ReducerName.col_id(); let st_scheduled_row = db .iter_by_col_eq_mut(tx, ST_SCHEDULED_ID, table_id_col, &table_id.into())? .next() .ok_or_else(|| anyhow!("Scheduled table with id {table_id} entry does not exist in `st_scheduled`"))?; - let reducer = st_scheduled_row.read_col::>(reducer_name_col)?; + let function = st_scheduled_row.read_col::>(function_name_col)?; - Ok(ScheduledReducer { - reducer, + Ok(ScheduledFunction { + function, bsatn_args: schedule_row.to_bsatn_vec()?, }) } -/// Helper to get schedule_row with `MutTxId` +/// Helper to get `schedule_row` with `MutTxId`. fn get_schedule_row_mut<'a>( tx: &'a MutTxId, db: &'a RelationalDB, - id: ScheduledReducerId, + id: ScheduledFunctionId, ) -> anyhow::Result> { db.iter_by_col_eq_mut(tx, id.table_id, id.id_column, &id.schedule_id.into())? .next() .ok_or_else(|| anyhow!("Schedule with ID {} not found in table {}", id.schedule_id, id.table_id)) } -/// Helper to get schedule_id and schedule_at from schedule_row product value +/// Helper to get `schedule_id` and `schedule_at` +/// from `schedule_row` product value. pub fn get_schedule_from_row( row: &RowRef<'_>, id_column: ColId, From 0e9f2a422bbdc8c52110214c0cc03f23f93b4def Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Fri, 21 Nov 2025 00:02:51 +0100 Subject: [PATCH 03/12] enable scheduled procedures and adjust test --- crates/codegen/src/rust.rs | 1 + .../snapshots/codegen__codegen_rust.snap | 14 + crates/core/src/host/mod.rs | 9 + crates/core/src/host/module_host.rs | 144 +++++------ crates/core/src/host/scheduler.rs | 243 ++++++++++-------- crates/core/src/host/v8/mod.rs | 22 +- .../src/host/wasm_common/module_host_actor.rs | 18 +- crates/schema/src/def.rs | 11 +- sdks/rust/tests/procedure-client/src/main.rs | 20 +- .../src/module_bindings/mod.rs | 2 +- .../module_bindings/schedule_proc_reducer.rs | 1 + 11 files changed, 251 insertions(+), 234 deletions(-) diff --git a/crates/codegen/src/rust.rs b/crates/codegen/src/rust.rs index 9bcb427298c..c6eae0aaa23 100644 --- a/crates/codegen/src/rust.rs +++ b/crates/codegen/src/rust.rs @@ -423,6 +423,7 @@ impl {func_name} for super::RemoteReducers {{ {callback_id}(self.imp.on_reducer( {reducer_name:?}, Box::new(move |ctx: &super::ReducerEventContext| {{ + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext {{ event: __sdk::ReducerEvent {{ reducer: super::Reducer::{enum_variant_name} {{ diff --git a/crates/codegen/tests/snapshots/codegen__codegen_rust.snap b/crates/codegen/tests/snapshots/codegen__codegen_rust.snap index 95c9ce2fac1..88f34824d9f 100644 --- a/crates/codegen/tests/snapshots/codegen__codegen_rust.snap +++ b/crates/codegen/tests/snapshots/codegen__codegen_rust.snap @@ -72,6 +72,7 @@ impl add_player for super::RemoteReducers { AddPlayerCallbackId(self.imp.on_reducer( "add_player", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::AddPlayer { @@ -181,6 +182,7 @@ impl add_private for super::RemoteReducers { AddPrivateCallbackId(self.imp.on_reducer( "add_private", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::AddPrivate { @@ -294,6 +296,7 @@ age: u8, AddCallbackId(self.imp.on_reducer( "add", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::Add { @@ -398,6 +401,7 @@ impl assert_caller_identity_is_module_identity for super::RemoteReducers { AssertCallerIdentityIsModuleIdentityCallbackId(self.imp.on_reducer( "assert_caller_identity_is_module_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::AssertCallerIdentityIsModuleIdentity { @@ -527,6 +531,7 @@ impl client_connected for super::RemoteReducers { ClientConnectedCallbackId(self.imp.on_reducer( "client_connected", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::ClientConnected { @@ -636,6 +641,7 @@ impl delete_player for super::RemoteReducers { DeletePlayerCallbackId(self.imp.on_reducer( "delete_player", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::DeletePlayer { @@ -745,6 +751,7 @@ impl delete_players_by_name for super::RemoteReducers { DeletePlayersByNameCallbackId(self.imp.on_reducer( "delete_players_by_name", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::DeletePlayersByName { @@ -1066,6 +1073,7 @@ impl list_over_age for super::RemoteReducers { ListOverAgeCallbackId(self.imp.on_reducer( "list_over_age", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::ListOverAge { @@ -1170,6 +1178,7 @@ impl log_module_identity for super::RemoteReducers { LogModuleIdentityCallbackId(self.imp.on_reducer( "log_module_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::LogModuleIdentity { @@ -3567,6 +3576,7 @@ impl query_private for super::RemoteReducers { QueryPrivateCallbackId(self.imp.on_reducer( "query_private", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::QueryPrivate { @@ -3852,6 +3862,7 @@ impl repeating_test for super::RemoteReducers { RepeatingTestCallbackId(self.imp.on_reducer( "repeating_test", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::RepeatingTest { @@ -4015,6 +4026,7 @@ impl say_hello for super::RemoteReducers { SayHelloCallbackId(self.imp.on_reducer( "say_hello", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::SayHello { @@ -4325,6 +4337,7 @@ impl test_btree_index_args for super::RemoteReducers { TestBtreeIndexArgsCallbackId(self.imp.on_reducer( "test_btree_index_args", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::TestBtreeIndexArgs { @@ -4878,6 +4891,7 @@ arg_4: NamespaceTestF, TestCallbackId(self.imp.on_reducer( "test", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { reducer: super::Reducer::Test { diff --git a/crates/core/src/host/mod.rs b/crates/core/src/host/mod.rs index 87d119a8309..fef8512144e 100644 --- a/crates/core/src/host/mod.rs +++ b/crates/core/src/host/mod.rs @@ -8,6 +8,7 @@ use spacetimedb_lib::bsatn; use spacetimedb_lib::de::{serde::SeedWrapper, DeserializeSeed}; use spacetimedb_lib::ProductValue; use spacetimedb_schema::def::deserialize::{ArgsSeed, FunctionDef}; +use spacetimedb_schema::def::ModuleDef; mod disk_storage; mod host_controller; @@ -41,6 +42,14 @@ pub enum FunctionArgs { } impl FunctionArgs { + fn into_tuple_for_def( + self, + module: &ModuleDef, + def: &Def, + ) -> Result { + self.into_tuple(module.arg_seed_for(def)) + } + fn into_tuple(self, seed: ArgsSeed<'_, Def>) -> Result { self._into_tuple(seed).map_err(|err| InvalidFunctionArguments { err, diff --git a/crates/core/src/host/module_host.rs b/crates/core/src/host/module_host.rs index 87b1be33a1b..7b5e03365fb 100644 --- a/crates/core/src/host/module_host.rs +++ b/crates/core/src/host/module_host.rs @@ -11,7 +11,6 @@ use crate::error::DBError; use crate::estimation::estimate_rows_scanned; use crate::hash::Hash; use crate::host::host_controller::CallProcedureReturn; -use crate::host::scheduler::{handle_queued_call_reducer_params, QueueItem}; use crate::host::v8::JsInstance; use crate::host::wasmtime::ModuleInstance; use crate::host::{InvalidFunctionArguments, InvalidViewArguments}; @@ -41,7 +40,7 @@ use spacetimedb_client_api_messages::websocket::{ByteListLen, Compression, OneOf use spacetimedb_data_structures::error_stream::ErrorStream; use spacetimedb_data_structures::map::{HashCollectionExt as _, IntMap}; use spacetimedb_datastore::error::DatastoreError; -use spacetimedb_datastore::execution_context::{ExecutionContext, ReducerContext, Workload, WorkloadType}; +use spacetimedb_datastore::execution_context::{Workload, WorkloadType}; use spacetimedb_datastore::locking_tx_datastore::{MutTxId, ViewCallInfo}; use spacetimedb_datastore::traits::{IsolationLevel, Program, TxData}; use spacetimedb_durability::DurableOffset; @@ -56,7 +55,6 @@ use spacetimedb_primitives::{ArgId, ProcedureId, TableId, ViewFnPtr, ViewId}; use spacetimedb_query::compile_subscription; use spacetimedb_sats::{AlgebraicTypeRef, ProductValue}; use spacetimedb_schema::auto_migrate::{AutoMigrateError, MigrationPolicy}; -use spacetimedb_schema::def::deserialize::ArgsSeed; use spacetimedb_schema::def::{ModuleDef, ProcedureDef, ReducerDef, TableDef, ViewDef}; use spacetimedb_schema::schema::{Schema, TableSchema}; use spacetimedb_vm::relation::RelValue; @@ -608,59 +606,6 @@ pub fn call_identity_connected( } } -// Only for logging purposes. -const SCHEDULED_REDUCER: &str = "scheduled_reducer"; - -pub(crate) fn call_scheduled_reducer( - module: &ModuleInfo, - queue_item: QueueItem, - call_reducer: impl FnOnce(Option, CallReducerParams) -> (ReducerCallResult, bool), -) -> (Result<(ReducerCallResult, Timestamp), ReducerCallError>, bool) { - extract_trapped(call_scheduled_reducer_inner(module, queue_item, call_reducer)) -} - -fn call_scheduled_reducer_inner( - module: &ModuleInfo, - item: QueueItem, - call_reducer: impl FnOnce(Option, CallReducerParams) -> (ReducerCallResult, bool), -) -> Result<((ReducerCallResult, Timestamp), bool), ReducerCallError> { - let db = &module.relational_db(); - let mut tx = db.begin_mut_tx(IsolationLevel::Serializable, Workload::Internal); - - match handle_queued_call_reducer_params(&tx, module, db, item) { - Ok(Some(params)) => { - // Is necessary to patch the context with the actual calling reducer - let reducer_def = module - .module_def - .get_reducer_by_id(params.reducer_id) - .ok_or(ReducerCallError::ScheduleReducerNotFound)?; - let reducer = &*reducer_def.name; - - tx.ctx = ExecutionContext::with_workload( - tx.ctx.database_identity(), - Workload::Reducer(ReducerContext { - name: reducer.into(), - caller_identity: params.caller_identity, - caller_connection_id: params.caller_connection_id, - timestamp: Timestamp::now(), - arg_bsatn: params.args.get_bsatn().clone(), - }), - ); - - let timestamp = params.timestamp; - let (res, trapped) = call_reducer(Some(tx), params); - Ok(((res, timestamp), trapped)) - } - Ok(None) => Err(ReducerCallError::ScheduleReducerNotFound), - Err(err) => Err(ReducerCallError::Args(InvalidReducerArguments( - InvalidFunctionArguments { - err, - function_name: SCHEDULED_REDUCER.into(), - }, - ))), - } -} - pub struct CallReducerParams { pub timestamp: Timestamp, pub caller_identity: Identity, @@ -671,6 +616,7 @@ pub struct CallReducerParams { pub reducer_id: ReducerId, pub args: ArgsTuple, } + impl CallReducerParams { /// Returns a set of parameters for a call that came from within /// and without a client/caller/request_id. @@ -718,6 +664,26 @@ pub struct CallProcedureParams { pub args: ArgsTuple, } +impl CallProcedureParams { + /// Returns a set of parameters for a call that came from within + /// and without a client/caller/request_id. + pub fn from_system( + timestamp: Timestamp, + caller_identity: Identity, + procedure_id: ProcedureId, + args: ArgsTuple, + ) -> Self { + Self { + timestamp, + caller_identity, + caller_connection_id: ConnectionId::ZERO, + timer: None, + procedure_id, + args, + } + } +} + /// Holds a [`Module`] and a set of [`Instance`]s from it, /// and allocates the [`Instance`]s to be used for function calls. /// @@ -1442,8 +1408,9 @@ impl ModuleHost { reducer_def: &ReducerDef, args: FunctionArgs, ) -> Result { - let reducer_seed = ArgsSeed(module.module_def.typespace().with_type(reducer_def)); - let args = args.into_tuple(reducer_seed).map_err(InvalidReducerArguments)?; + let args = args + .into_tuple_for_def(&module.module_def, reducer_def) + .map_err(InvalidReducerArguments)?; let caller_connection_id = caller_connection_id.unwrap_or(ConnectionId::ZERO); Ok(CallReducerParams { timestamp: Timestamp::now(), @@ -1457,6 +1424,20 @@ impl ModuleHost { }) } + pub async fn call_reducer_with_params( + &self, + reducer_name: &str, + params: CallReducerParams, + ) -> Result { + self.call( + reducer_name, + params, + |p, inst| inst.call_reducer(None, p), + |p, inst| inst.call_reducer(None, p), + ) + .await + } + async fn call_reducer_inner( &self, caller_identity: Identity, @@ -1468,8 +1449,9 @@ impl ModuleHost { reducer_def: &ReducerDef, args: FunctionArgs, ) -> Result { - let reducer_seed = ArgsSeed(self.info.module_def.typespace().with_type(reducer_def)); - let args = args.into_tuple(reducer_seed).map_err(InvalidReducerArguments)?; + let args = args + .into_tuple_for_def(&self.info.module_def, reducer_def) + .map_err(InvalidReducerArguments)?; let caller_connection_id = caller_connection_id.unwrap_or(ConnectionId::ZERO); let call_reducer_params = CallReducerParams { timestamp: Timestamp::now(), @@ -1483,12 +1465,7 @@ impl ModuleHost { }; Ok(self - .call( - &reducer_def.name, - call_reducer_params, - |p, inst| inst.call_reducer(None, p), - |p, inst| inst.call_reducer(None, p), - ) + .call_reducer_with_params(&reducer_def.name, call_reducer_params) .await?) } @@ -1593,9 +1570,10 @@ impl ModuleHost { procedure_def: &ProcedureDef, args: FunctionArgs, ) -> Result { - let procedure_seed = ArgsSeed(self.info.module_def.typespace().with_type(procedure_def)); + let args = args + .into_tuple_for_def(&self.info.module_def, procedure_def) + .map_err(InvalidProcedureArguments)?; let caller_connection_id = caller_connection_id.unwrap_or(ConnectionId::ZERO); - let args = args.into_tuple(procedure_seed).map_err(InvalidProcedureArguments)?; let params = CallProcedureParams { timestamp: Timestamp::now(), @@ -1616,20 +1594,18 @@ impl ModuleHost { .map_err(Into::into) } - // Scheduled reducers require a different function here to call their reducer - // because their reducer arguments are stored in the database and need to be fetched - // within the same transaction as the reducer call. - pub(crate) async fn call_scheduled_reducer( + // This is not reused in `call_procedure_inner` + // due to concerns re. `Timestamp::now`. + pub async fn call_procedure_with_params( &self, - item: QueueItem, - ) -> Result<(ReducerCallResult, Timestamp), ReducerCallError> { - self.call( - SCHEDULED_REDUCER, - item, - |item, inst| inst.call_scheduled_reducer(item), - |item, inst| inst.call_scheduled_reducer(item), - ) - .await? + name: &str, + params: CallProcedureParams, + ) -> Result { + self.call_async_with_instance(name, async move |mut inst| { + let res = inst.call_procedure(params).await; + (res, inst) + }) + .await } /// Materializes the views return by the `view_collector`, if not already materialized, @@ -1722,9 +1698,9 @@ impl ModuleHost { let view_def = module_def.view(view_name).ok_or(ViewCallError::NoSuchView)?; let fn_ptr = view_def.fn_ptr; let row_type = view_def.product_type_ref; - let typespace = module_def.typespace().with_type(view_def); - let view_seed = ArgsSeed(typespace); - let args = args.into_tuple(view_seed).map_err(InvalidViewArguments)?; + let args = args + .into_tuple_for_def(module_def, view_def) + .map_err(InvalidViewArguments)?; match self .call_view_inner(tx, view_name, view_id, table_id, fn_ptr, caller, sender, args, row_type) diff --git a/crates/core/src/host/scheduler.rs b/crates/core/src/host/scheduler.rs index 2a7fa9db624..35195dc1df5 100644 --- a/crates/core/src/host/scheduler.rs +++ b/crates/core/src/host/scheduler.rs @@ -1,35 +1,33 @@ -use std::sync::Arc; -use std::time::Duration; - +use super::module_host::ModuleEvent; +use super::module_host::ModuleFunctionCall; +use super::module_host::{CallReducerParams, WeakModuleHost}; +use super::module_host::{DatabaseUpdate, EventStatus}; +use super::{FunctionArgs, ModuleHost}; +use crate::db::relational_db::RelationalDB; +use crate::host::module_host::{CallProcedureParams, ModuleInfo}; +use crate::host::NoSuchModule; +use crate::host::{InvalidProcedureArguments, InvalidReducerArguments}; use anyhow::anyhow; +use core::time::Duration; use futures::StreamExt; +use itertools::Either; use rustc_hash::FxHashMap; use spacetimedb_client_api_messages::energy::EnergyQuanta; +use spacetimedb_datastore::execution_context::Workload; +use spacetimedb_datastore::locking_tx_datastore::MutTxId; +use spacetimedb_datastore::locking_tx_datastore::TxId; +use spacetimedb_datastore::system_tables::{StFields, StScheduledFields, ST_SCHEDULED_ID}; +use spacetimedb_datastore::traits::IsolationLevel; use spacetimedb_lib::scheduler::ScheduleAt; use spacetimedb_lib::Timestamp; -use spacetimedb_primitives::ReducerId; use spacetimedb_primitives::{ColId, TableId}; use spacetimedb_sats::{bsatn::ToBsatn as _, AlgebraicValue}; -use spacetimedb_schema::def::deserialize::ArgsSeed; -use spacetimedb_schema::def::ReducerDef; use spacetimedb_table::table::RowRef; +use std::sync::Arc; use tokio::sync::mpsc; use tokio::time::Instant; use tokio_util::time::delay_queue::{self, DelayQueue, Expired}; -use crate::db::relational_db::RelationalDB; -use crate::host::module_host::ModuleInfo; - -use super::module_host::ModuleEvent; -use super::module_host::ModuleFunctionCall; -use super::module_host::{CallReducerParams, WeakModuleHost}; -use super::module_host::{DatabaseUpdate, EventStatus}; -use super::{FunctionArgs, ModuleHost, ReducerCallError}; -use spacetimedb_datastore::execution_context::Workload; -use spacetimedb_datastore::locking_tx_datastore::MutTxId; -use spacetimedb_datastore::system_tables::{StFields, StScheduledFields, ST_SCHEDULED_ID}; -use spacetimedb_datastore::traits::IsolationLevel; - #[derive(Copy, Clone, Eq, PartialEq, Hash)] pub struct ScheduledFunctionId { /// The ID of the table whose rows hold the scheduled reducers or procedures. @@ -333,36 +331,61 @@ impl SchedulerActor { return; }; let db = module_host.replica_ctx().relational_db.clone(); - let module_host_clone = module_host.clone(); - let res = tokio::spawn(async move { module_host.call_scheduled_reducer(item).await }).await; - - match res { - // If we didn't actually call the function - // because the module exited or it was already deleted, + // Determine the call params. + // This also lets us know whether to call a reducer or procedure. + let params = call_params_for_queued_item(&module_host.info, &db, item); + let (timestamp, params) = match params { + // If the function was already deleted, // leave the `ScheduledFunction` in the database for when the module restarts. - Ok(Err(ReducerCallError::NoSuchModule(_)) | Err(ReducerCallError::ScheduleReducerNotFound)) => {} - - Ok(Ok((_, ts))) => { + Ok(None) => return, + Ok(Some(params)) => params, + Err(_) => { if let Some(id) = id { - let _ = self.delete_scheduled_function_row(&db, id, module_host_clone, ts).await; + // TODO: Handle errors here? + let _ = self + .delete_scheduled_function_row(&db, id, module_host, Timestamp::now()) + .await; } + return; + } + }; + + let module_host_clone = module_host.clone(); + let res = tokio::spawn(async move { + match params { + Either::Left(params) => module_host_clone + .call_reducer_with_params("scheduled_reducer", params) + .await + .map(drop), + Either::Right(params) => module_host_clone + .call_procedure_with_params("scheduled_procedure", params) + .await + .map(drop), } + }) + .await; - // Delete the scheduled function row if its not repeated function. - Ok(_) | Err(_) => { + match res { + Ok(Err(NoSuchModule)) => {} + Ok(Ok(())) => { + if let Some(id) = id { + let _ = self + .delete_scheduled_function_row(&db, id, module_host, timestamp) + .await; + } + } + Err(e) => { if let Some(id) = id { // TODO: Handle errors here? let _ = self - .delete_scheduled_function_row(&db, id, module_host_clone, Timestamp::now()) + .delete_scheduled_function_row(&db, id, module_host, Timestamp::now()) .await; } + + log::error!("invoking scheduled function failed: {e:#}"); } } - - if let Err(e) = res { - log::error!("invoking scheduled function failed: {e:#}"); - }; } async fn delete_scheduled_function_row( @@ -378,28 +401,19 @@ impl SchedulerActor { .on_module_thread("delete_scheduled_function_row", move || { let mut tx = db.begin_mut_tx(IsolationLevel::Serializable, Workload::Internal); - match get_schedule_row_mut(&tx, &db, id) { - Ok(schedule_row) => { - if let Ok(schedule_at) = read_schedule_at(&schedule_row, id.at_column) { - // If the schedule is an interval, we handle it as a repeated schedule - if let ScheduleAt::Interval(_) = schedule_at { - return Some(schedule_at); - } - let row_ptr = schedule_row.pointer(); - db.delete(&mut tx, id.table_id, [row_ptr]); - - commit_and_broadcast_deletion_event(tx, module_host); - } else { - log::debug!( - "Failed to read 'scheduled_at' from row: table_id {}, schedule_id {}", - id.table_id, - id.schedule_id - ); + if let Ok(schedule_row) = get_schedule_row_mut(&tx, &db, id) { + if let Ok(schedule_at) = read_schedule_at(&schedule_row, id.at_column) { + // If the schedule is an interval, we handle it as a repeated schedule + if let ScheduleAt::Interval(_) = schedule_at { + return Some(schedule_at); } - } - Err(_) => { + let row_ptr = schedule_row.pointer(); + db.delete(&mut tx, id.table_id, [row_ptr]); + + commit_and_broadcast_deletion_event(tx, module_host); + } else { log::debug!( - "Table row corresponding to yield scheduler ID not found: table_id {}, scheduler_id {}", + "Failed to read 'scheduled_at' from row: table_id {}, schedule_id {}", id.table_id, id.schedule_id ); @@ -420,62 +434,72 @@ impl SchedulerActor { } } -pub(crate) fn handle_queued_call_reducer_params( - tx: &MutTxId, - module_info: &ModuleInfo, +pub(crate) fn call_params_for_queued_item( + module: &ModuleInfo, db: &RelationalDB, item: QueueItem, -) -> anyhow::Result> { - let caller_identity = module_info.database_identity; - - match item { +) -> anyhow::Result> { + Ok(Some(match item { QueueItem::Id { id, at } => { - let Ok(schedule_row) = get_schedule_row_mut(tx, db, id) else { - // if the row is not found, it means the schedule is cancelled by the user - log::debug!( - "table row corresponding to yield scheduler id not found: table_id {}, scheduler_id {}", - id.table_id, - id.schedule_id - ); + let Ok(ScheduledFunction { function, bsatn_args }) = db + .with_read_only::<_, anyhow::Result>(Workload::Internal, |tx| { + let schedule_row = get_schedule_row(tx, db, id)?; + let fun = process_schedule(tx, db, id.table_id, &schedule_row)?; + Ok(fun) + }) + else { + // If the row is not found, it means the schedule is cancelled by the user. return Ok(None); }; - let ScheduledFunction { function, bsatn_args } = process_schedule(tx, db, id.table_id, &schedule_row)?; - - let (reducer_id, reducer_seed) = find_reducer(module_info, &function)?; - - let reducer_args = FunctionArgs::Bsatn(bsatn_args.into()).into_tuple(reducer_seed)?; - - // the timestamp we tell the reducer it's running at will be - // at least the timestamp it was scheduled to run at. - let timestamp = at.max(Timestamp::now()); - - Ok(Some(CallReducerParams::from_system( - timestamp, - caller_identity, - reducer_id, - reducer_args, - ))) + let fun_args = FunctionArgs::Bsatn(bsatn_args.into()); + function_to_call_params(module, &function, fun_args, Some(at))? } QueueItem::VolatileNonatomicImmediate { function_name, args } => { - let (reducer_id, reducer_seed) = find_reducer(module_info, &function_name)?; - let reducer_args = args.into_tuple(reducer_seed)?; - - Ok(Some(CallReducerParams::from_system( - Timestamp::now(), - caller_identity, - reducer_id, - reducer_args, - ))) + function_to_call_params(module, &function_name, args, None)? } - } + })) } -fn find_reducer<'a>(module_info: &'a ModuleInfo, name: &str) -> anyhow::Result<(ReducerId, ArgsSeed<'a, ReducerDef>)> { - module_info - .module_def - .reducer_arg_deserialize_seed(name) - .ok_or_else(|| anyhow!("Reducer not found: {name}")) +type CallParams = Either; + +/// Finds the function for `name` +/// and returns the appropriate call parameters +/// to call the function with `args`. +fn function_to_call_params( + module: &ModuleInfo, + name: &str, + args: FunctionArgs, + at: Option, +) -> anyhow::Result<(Timestamp, CallParams)> { + let identity = module.database_identity; + + // Find the function and deserialize the arguments. + let module = &module.module_def; + let (id, args) = if let Some((id, def)) = module.reducer_full(name) { + let args = args.into_tuple_for_def(module, def).map_err(InvalidReducerArguments)?; + (Either::Left(id), args) + } else if let Some((id, def)) = module.procedure_full(name) { + let args = args + .into_tuple_for_def(module, def) + .map_err(InvalidProcedureArguments)?; + (Either::Right(id), args) + } else { + return Err(anyhow!("Reducer or procedure `{name}` not found")); + }; + + // The timestamp we tell the function it's running at will be + // at least the timestamp it was scheduled to run at. + let now = Timestamp::now(); + let ts = at.unwrap_or(now).max(now); + + use Either::*; + let params = match id { + Left(id) => Left(CallReducerParams::from_system(ts, identity, id, args)), + Right(id) => Right(CallProcedureParams::from_system(ts, identity, id, args)), + }; + + Ok((ts, params)) } fn commit_and_broadcast_deletion_event(tx: MutTxId, module_host: ModuleHost) { @@ -505,7 +529,7 @@ fn commit_and_broadcast_deletion_event(tx: MutTxId, module_host: ModuleHost) { /// Generate [`ScheduledFunction`] for given [`ScheduledFunctionId`]. fn process_schedule( - tx: &MutTxId, + tx: &TxId, db: &RelationalDB, table_id: TableId, schedule_row: &RowRef<'_>, @@ -514,7 +538,7 @@ fn process_schedule( let table_id_col = StScheduledFields::TableId.col_id(); let function_name_col = StScheduledFields::ReducerName.col_id(); let st_scheduled_row = db - .iter_by_col_eq_mut(tx, ST_SCHEDULED_ID, table_id_col, &table_id.into())? + .iter_by_col_eq(tx, ST_SCHEDULED_ID, table_id_col, &table_id.into())? .next() .ok_or_else(|| anyhow!("Scheduled table with id {table_id} entry does not exist in `st_scheduled`"))?; let function = st_scheduled_row.read_col::>(function_name_col)?; @@ -525,6 +549,16 @@ fn process_schedule( }) } +/// Helper to get `schedule_row` with `MutTxId`. +fn get_schedule_row<'a>(tx: &'a TxId, db: &'a RelationalDB, id: ScheduledFunctionId) -> anyhow::Result> { + db.iter_by_col_eq(tx, id.table_id, id.id_column, &id.schedule_id.into())? + .next() + .ok_or_else(|| anyhow!("Schedule with ID {} not found in table {}", id.schedule_id, id.table_id)) + .inspect_err(|err| { + log::debug!("{err}"); + }) +} + /// Helper to get `schedule_row` with `MutTxId`. fn get_schedule_row_mut<'a>( tx: &'a MutTxId, @@ -534,6 +568,9 @@ fn get_schedule_row_mut<'a>( db.iter_by_col_eq_mut(tx, id.table_id, id.id_column, &id.schedule_id.into())? .next() .ok_or_else(|| anyhow!("Schedule with ID {} not found in table {}", id.schedule_id, id.table_id)) + .inspect_err(|err| { + log::debug!("{err}"); + }) } /// Helper to get `schedule_id` and `schedule_at` diff --git a/crates/core/src/host/v8/mod.rs b/crates/core/src/host/v8/mod.rs index a3949a207e1..36b9e9cba51 100644 --- a/crates/core/src/host/v8/mod.rs +++ b/crates/core/src/host/v8/mod.rs @@ -16,10 +16,8 @@ use crate::client::ClientActorId; use crate::host::host_controller::CallProcedureReturn; use crate::host::instance_env::{ChunkPool, InstanceEnv, TxSlot}; use crate::host::module_host::{ - call_identity_connected, call_scheduled_reducer, init_database, CallViewParams, ClientConnectedError, Instance, - ViewCallResult, + call_identity_connected, init_database, CallViewParams, ClientConnectedError, Instance, ViewCallResult, }; -use crate::host::scheduler::QueueItem; use crate::host::wasm_common::instrumentation::CallTimes; use crate::host::wasm_common::module_host_actor::{ AnonymousViewOp, DescribeError, ExecutionError, ExecutionResult, ExecutionStats, ExecutionTimings, InstanceCommon, @@ -362,17 +360,6 @@ impl JsInstance { .await } - pub(crate) async fn call_scheduled_reducer( - self: Box, - item: QueueItem, - ) -> (Result<(ReducerCallResult, Timestamp), ReducerCallError>, Box) { - self.send_recv( - JsWorkerReply::into_call_scheduled_reducer, - JsWorkerRequest::CallScheduledReducer(item), - ) - .await - } - pub async fn init_database( self: Box, program: Program, @@ -416,7 +403,6 @@ enum JsWorkerReply { CallIdentityConnected(Result<(), ClientConnectedError>), CallIdentityDisconnected(Result<(), ReducerCallError>), DisconnectClient(Result<(), ReducerCallError>), - CallScheduledReducer(Result<(ReducerCallResult, Timestamp), ReducerCallError>), InitDatabase(anyhow::Result>), } @@ -450,8 +436,6 @@ enum JsWorkerRequest { CallIdentityDisconnected(Identity, ConnectionId, bool), /// See [`JsInstance::disconnect_client`]. DisconnectClient(ClientActorId), - /// See [`JsInstance::call_scheduled_reducer`]. - CallScheduledReducer(QueueItem), /// See [`JsInstance::init_database`]. InitDatabase(Program), } @@ -638,10 +622,6 @@ fn spawn_instance_worker( let res = ModuleHost::disconnect_client_inner(client_id, info, call_reducer, &mut trapped); reply("disconnect_client", DisconnectClient(res), trapped); } - JsWorkerRequest::CallScheduledReducer(queue_item) => { - let (res, trapped) = call_scheduled_reducer(info, queue_item, call_reducer); - reply("call_scheduled_reducer", CallScheduledReducer(res), trapped); - } JsWorkerRequest::InitDatabase(program) => { let (res, trapped): (Result, anyhow::Error>, bool) = init_database(replica_ctx, &module_common.info().module_def, program, call_reducer); diff --git a/crates/core/src/host/wasm_common/module_host_actor.rs b/crates/core/src/host/wasm_common/module_host_actor.rs index 08c25415eea..652c5e461d7 100644 --- a/crates/core/src/host/wasm_common/module_host_actor.rs +++ b/crates/core/src/host/wasm_common/module_host_actor.rs @@ -7,11 +7,10 @@ use crate::host::host_controller::CallProcedureReturn; use crate::host::instance_env::{InstanceEnv, TxSlot}; use crate::host::module_common::{build_common_module_from_raw, ModuleCommon}; use crate::host::module_host::{ - call_identity_connected, call_scheduled_reducer, init_database, CallProcedureParams, CallReducerParams, - CallViewParams, ClientConnectedError, DatabaseUpdate, EventStatus, ModuleEvent, ModuleFunctionCall, ModuleInfo, - ViewCallResult, ViewOutcome, + call_identity_connected, init_database, CallProcedureParams, CallReducerParams, CallViewParams, + ClientConnectedError, DatabaseUpdate, EventStatus, ModuleEvent, ModuleFunctionCall, ModuleInfo, ViewCallResult, + ViewOutcome, }; -use crate::host::scheduler::QueueItem; use crate::host::{ ArgsTuple, ModuleHost, ProcedureCallError, ProcedureCallResult, ReducerCallError, ReducerCallResult, ReducerId, ReducerOutcome, Scheduler, UpdateDatabaseResult, @@ -368,17 +367,6 @@ impl WasmModuleInstance { res } - pub(crate) fn call_scheduled_reducer( - &mut self, - item: QueueItem, - ) -> Result<(ReducerCallResult, Timestamp), ReducerCallError> { - let module = &self.common.info.clone(); - let call_reducer = |tx, params| self.call_reducer_with_tx(tx, params); - let (res, trapped) = call_scheduled_reducer(module, item, call_reducer); - self.trapped = trapped; - res - } - pub fn init_database(&mut self, program: Program) -> anyhow::Result> { let module_def = &self.common.info.clone().module_def; let replica_ctx = &self.instance.replica_ctx().clone(); diff --git a/crates/schema/src/def.rs b/crates/schema/src/def.rs index 10c18b36691..6ad11e72f12 100644 --- a/crates/schema/src/def.rs +++ b/crates/schema/src/def.rs @@ -308,14 +308,9 @@ impl ModuleDef { self.lifecycle_reducers[lifecycle].map(|i| (i, &self.reducers[i.idx()])) } - /// Get a `DeserializeSeed` that can pull data from a `Deserializer` and format it into a `ProductType` - /// at the parameter type of the reducer named `name`. - pub fn reducer_arg_deserialize_seed>( - &self, - name: &K, - ) -> Option<(ReducerId, ArgsSeed<'_, ReducerDef>)> { - let (id, reducer) = self.reducer_full(name)?; - Some((id, ArgsSeed(self.typespace.with_type(reducer)))) + /// Returns a `DeserializeSeed` that can pull data from a `Deserializer` for `def`. + pub fn arg_seed_for<'a, T>(&'a self, def: &'a T) -> ArgsSeed<'a, T> { + ArgsSeed(self.typespace.with_type(def)) } /// Look up the name corresponding to an `AlgebraicTypeRef`. diff --git a/sdks/rust/tests/procedure-client/src/main.rs b/sdks/rust/tests/procedure-client/src/main.rs index f7cbe7e6801..7dfddeab7ac 100644 --- a/sdks/rust/tests/procedure-client/src/main.rs +++ b/sdks/rust/tests/procedure-client/src/main.rs @@ -1,5 +1,7 @@ mod module_bindings; +use core::time::Duration; + use anyhow::Context; use module_bindings::*; use spacetimedb_lib::db::raw_def::v9::{RawMiscModuleExportV9, RawModuleDefV9}; @@ -324,8 +326,22 @@ fn exec_schedule_procedure() { connect_then(&test_counter, { move |ctx| { ctx.db().proc_inserts_into().on_insert(move |_, row| { - assert_eq!(row.x, 24); - assert_eq!(row.y, 42); + assert_eq!(row.x, 42); + assert_eq!(row.y, 24); + + // Ensure that the elapsed time + // between the reducer and procedure + // is at least 1 second + // but no more than 1 second + 50 milliseconds. + let elapsed = row + .procedure_ts + .duration_since(row.reducer_ts) + .expect("procedure ts > reducer ts"); + const MS_1000: Duration = Duration::from_millis(1000); + const MS_1050: Duration = Duration::from_millis(1050); + assert!(elapsed >= MS_1000); + assert!(elapsed <= MS_1050); + (callback_result.take().unwrap())(Ok(())); }); diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs b/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs index d6df0c17647..130d0653681 100644 --- a/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.8.0 (commit 1b87bac11aa139c9d710c173abbb12fcb2d985d1). +// This was generated using spacetimedb cli version 1.8.0 (commit 1eb9c6a2b20507afdd96bda1c2b68d5c9aaed093). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/schedule_proc_reducer.rs b/sdks/rust/tests/procedure-client/src/module_bindings/schedule_proc_reducer.rs index 845eb126ad5..d45ed3a846b 100644 --- a/sdks/rust/tests/procedure-client/src/module_bindings/schedule_proc_reducer.rs +++ b/sdks/rust/tests/procedure-client/src/module_bindings/schedule_proc_reducer.rs @@ -58,6 +58,7 @@ impl schedule_proc for super::RemoteReducers { ScheduleProcCallbackId(self.imp.on_reducer( "schedule_proc", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { From 484f9b2feedf7f3e3e0d75fbfd18816b257ce69a Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 24 Nov 2025 22:53:17 +0100 Subject: [PATCH 04/12] tweak docs of ::from_system functions --- crates/core/src/host/module_host.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/core/src/host/module_host.rs b/crates/core/src/host/module_host.rs index 7b5e03365fb..5cfe9abaa5b 100644 --- a/crates/core/src/host/module_host.rs +++ b/crates/core/src/host/module_host.rs @@ -618,8 +618,8 @@ pub struct CallReducerParams { } impl CallReducerParams { - /// Returns a set of parameters for a call that came from within - /// and without a client/caller/request_id. + /// Returns a set of parameters for an internal call + /// without a client/caller/request_id. pub fn from_system( timestamp: Timestamp, caller_identity: Identity, @@ -665,8 +665,8 @@ pub struct CallProcedureParams { } impl CallProcedureParams { - /// Returns a set of parameters for a call that came from within - /// and without a client/caller/request_id. + /// Returns a set of parameters for an internal call + /// without a client/caller/request_id. pub fn from_system( timestamp: Timestamp, caller_identity: Identity, From 2c213e9e8ff1dc179af669b6558cee2498e57601 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 24 Nov 2025 22:55:16 +0100 Subject: [PATCH 05/12] exec_schedule_procedure: give CI 1 sec instead o 50 ms --- sdks/rust/tests/procedure-client/src/main.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdks/rust/tests/procedure-client/src/main.rs b/sdks/rust/tests/procedure-client/src/main.rs index 7dfddeab7ac..9ebfb8026de 100644 --- a/sdks/rust/tests/procedure-client/src/main.rs +++ b/sdks/rust/tests/procedure-client/src/main.rs @@ -332,15 +332,15 @@ fn exec_schedule_procedure() { // Ensure that the elapsed time // between the reducer and procedure // is at least 1 second - // but no more than 1 second + 50 milliseconds. + // but no more than 2 seconds. let elapsed = row .procedure_ts .duration_since(row.reducer_ts) .expect("procedure ts > reducer ts"); - const MS_1000: Duration = Duration::from_millis(1000); - const MS_1050: Duration = Duration::from_millis(1050); + const MS_1000: Duration = Duration::from_secs(1); + const MS_2000: Duration = Duration::from_secs(2); assert!(elapsed >= MS_1000); - assert!(elapsed <= MS_1050); + assert!(elapsed <= MS_2000); (callback_result.take().unwrap())(Ok(())); }); From b4d1f5d6ad5a03bb1b9e0ebb5909c6c795fbeafe Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Tue, 25 Nov 2025 00:31:19 +0100 Subject: [PATCH 06/12] scheduling: fix atomicity issues --- crates/core/src/host/module_host.rs | 30 ++-- crates/core/src/host/scheduler.rs | 259 ++++++++++++++++------------ 2 files changed, 160 insertions(+), 129 deletions(-) diff --git a/crates/core/src/host/module_host.rs b/crates/core/src/host/module_host.rs index 5cfe9abaa5b..89c4acf7151 100644 --- a/crates/core/src/host/module_host.rs +++ b/crates/core/src/host/module_host.rs @@ -1427,13 +1427,14 @@ impl ModuleHost { pub async fn call_reducer_with_params( &self, reducer_name: &str, + tx: Option, params: CallReducerParams, ) -> Result { self.call( reducer_name, - params, - |p, inst| inst.call_reducer(None, p), - |p, inst| inst.call_reducer(None, p), + (tx, params), + |(tx, p), inst| inst.call_reducer(tx, p), + |(tx, p), inst| inst.call_reducer(tx, p), ) .await } @@ -1465,7 +1466,7 @@ impl ModuleHost { }; Ok(self - .call_reducer_with_params(&reducer_def.name, call_reducer_params) + .call_reducer_with_params(&reducer_def.name, None, call_reducer_params) .await?) } @@ -1583,15 +1584,9 @@ impl ModuleHost { procedure_id, args, }; - self.call_async_with_instance(&procedure_def.name, async move |inst| match inst { - Instance::Wasm(mut inst) => (inst.call_procedure(params).await, Instance::Wasm(inst)), - Instance::Js(inst) => { - let (r, s) = inst.call_procedure(params).await; - (r, Instance::Js(s)) - } - }) - .await - .map_err(Into::into) + self.call_procedure_with_params(&procedure_def.name, params) + .await + .map_err(Into::into) } // This is not reused in `call_procedure_inner` @@ -1601,9 +1596,12 @@ impl ModuleHost { name: &str, params: CallProcedureParams, ) -> Result { - self.call_async_with_instance(name, async move |mut inst| { - let res = inst.call_procedure(params).await; - (res, inst) + self.call_async_with_instance(name, async move |inst| match inst { + Instance::Wasm(mut inst) => (inst.call_procedure(params).await, Instance::Wasm(inst)), + Instance::Js(inst) => { + let (r, s) = inst.call_procedure(params).await; + (r, Instance::Js(s)) + } }) .await } diff --git a/crates/core/src/host/scheduler.rs b/crates/core/src/host/scheduler.rs index 35195dc1df5..ba314dd830c 100644 --- a/crates/core/src/host/scheduler.rs +++ b/crates/core/src/host/scheduler.rs @@ -15,7 +15,6 @@ use rustc_hash::FxHashMap; use spacetimedb_client_api_messages::energy::EnergyQuanta; use spacetimedb_datastore::execution_context::Workload; use spacetimedb_datastore::locking_tx_datastore::MutTxId; -use spacetimedb_datastore::locking_tx_datastore::TxId; use spacetimedb_datastore::system_tables::{StFields, StScheduledFields, ST_SCHEDULED_ID}; use spacetimedb_datastore::traits::IsolationLevel; use spacetimedb_lib::scheduler::ScheduleAt; @@ -25,6 +24,7 @@ use spacetimedb_sats::{bsatn::ToBsatn as _, AlgebraicValue}; use spacetimedb_table::table::RowRef; use std::sync::Arc; use tokio::sync::mpsc; +use tokio::task::JoinError; use tokio::time::Instant; use tokio_util::time::delay_queue::{self, DelayQueue, Expired}; @@ -319,7 +319,7 @@ impl SchedulerActor { async fn handle_queued(&mut self, id: Expired) { let item = id.into_inner(); - let id = match item { + let id: Option = match item { QueueItem::Id { id, .. } => Some(id), QueueItem::VolatileNonatomicImmediate { .. } => None, }; @@ -330,60 +330,80 @@ impl SchedulerActor { let Some(module_host) = self.module_host.upgrade() else { return; }; + + // We need a mutable transaction + // both to determine the function name and the scheduled row. let db = module_host.replica_ctx().relational_db.clone(); + let tx = db.begin_mut_tx(IsolationLevel::Serializable, Workload::Internal); // Determine the call params. // This also lets us know whether to call a reducer or procedure. - let params = call_params_for_queued_item(&module_host.info, &db, item); + let params = call_params_for_queued_item(&module_host.info, &db, &tx, item); let (timestamp, params) = match params { // If the function was already deleted, // leave the `ScheduledFunction` in the database for when the module restarts. Ok(None) => return, Ok(Some(params)) => params, - Err(_) => { + Err(err) => { + // All we can do here is log an error. + log::error!("could not determine scheduled function or its parameters: {err:#}"); + if let Some(id) = id { - // TODO: Handle errors here? let _ = self - .delete_scheduled_function_row(&db, id, module_host, Timestamp::now()) + .delete_scheduled_function_row(&db, Some(tx), id, &module_host, Timestamp::now()) .await; } return; } }; - let module_host_clone = module_host.clone(); - let res = tokio::spawn(async move { - match params { - Either::Left(params) => module_host_clone - .call_reducer_with_params("scheduled_reducer", params) - .await - .map(drop), - Either::Right(params) => module_host_clone - .call_procedure_with_params("scheduled_procedure", params) - .await - .map(drop), - } - }) - .await; - - match res { - Ok(Err(NoSuchModule)) => {} - Ok(Ok(())) => { - if let Some(id) = id { - let _ = self - .delete_scheduled_function_row(&db, id, module_host, timestamp) - .await; + // We've determined whether we have a reducer or procedure. + // The logic between them will now split, + // as for scheduled procedures, it's incorrect to retry them if execution aborts midway, + // so we must remove the schedule row before executing. + match params { + Either::Left(params) => { + // Execute the reducer. + let module_host_clone = module_host.clone(); + let res = tokio::spawn(async move { + module_host_clone + .call_reducer_with_params("scheduled_reducer", Some(tx), params) + .await + }) + .await; + + log_scheduled_exec_error(&res); + + // If we didn't actually call the reducer, because the module exited, + // leave the scheduled row in the database for when the module restarts. + match res { + Ok(Err(NoSuchModule)) => {} + Ok(Ok(_)) | Err(_) => { + if let Some(id) = id { + let _ = self + .delete_scheduled_function_row(&db, None, id, &module_host, Timestamp::now()) + .await; + } + } } } - Err(e) => { + Either::Right(params) => { + // Delete scheduled row. if let Some(id) = id { - // TODO: Handle errors here? let _ = self - .delete_scheduled_function_row(&db, id, module_host, Timestamp::now()) + .delete_scheduled_function_row(&db, Some(tx), id, &module_host, timestamp) .await; } - log::error!("invoking scheduled function failed: {e:#}"); + // Execute the procedure. + let res = tokio::spawn(async move { + module_host + .call_procedure_with_params("scheduled_procedure", params) + .await + }) + .await; + + log_scheduled_exec_error(&res); } } } @@ -391,37 +411,36 @@ impl SchedulerActor { async fn delete_scheduled_function_row( &mut self, db: &RelationalDB, + tx: Option, id: ScheduledFunctionId, - module_host: ModuleHost, + module_host: &ModuleHost, ts: Timestamp, - ) -> anyhow::Result<()> { - let host_clone = module_host.clone(); + ) { let db = db.clone(); - let schedule_at = host_clone - .on_module_thread("delete_scheduled_function_row", move || { - let mut tx = db.begin_mut_tx(IsolationLevel::Serializable, Workload::Internal); - - if let Ok(schedule_row) = get_schedule_row_mut(&tx, &db, id) { - if let Ok(schedule_at) = read_schedule_at(&schedule_row, id.at_column) { - // If the schedule is an interval, we handle it as a repeated schedule - if let ScheduleAt::Interval(_) = schedule_at { - return Some(schedule_at); - } - let row_ptr = schedule_row.pointer(); - db.delete(&mut tx, id.table_id, [row_ptr]); - - commit_and_broadcast_deletion_event(tx, module_host); - } else { - log::debug!( - "Failed to read 'scheduled_at' from row: table_id {}, schedule_id {}", - id.table_id, - id.schedule_id - ); - } - } - None - }) - .await?; + let schedule_at = match tx { + Some(tx) => Ok(delete_scheduled_function_row_with_tx(module_host, &db, tx, id)), + None => { + let host_clone = module_host.clone(); + module_host + .on_module_thread("delete_scheduled_function_row", move || { + let tx = db.begin_mut_tx(IsolationLevel::Serializable, Workload::Internal); + delete_scheduled_function_row_with_tx(&host_clone, &db, tx, id) + }) + .await + } + }; + + // Log errors if needed and bail on error. + let schedule_at = match schedule_at { + Ok(sa) => sa, + Err(err) => { + let tid = id.table_id; + let sid = id.schedule_id; + log::error!("couldn't delete scheduled row; table id `{tid}`, schedule id `{sid}`: {err:#}"); + return; + } + }; + // If this was repeated, we need to add it back to the queue. if let Some(ScheduleAt::Interval(dur)) = schedule_at { let key = self.queue.insert( @@ -430,27 +449,78 @@ impl SchedulerActor { ); self.key_map.insert(id, key); } - Ok(()) + } +} + +fn delete_scheduled_function_row_with_tx( + module_host: &ModuleHost, + db: &RelationalDB, + mut tx: MutTxId, + id: ScheduledFunctionId, +) -> Option { + if let Ok(Some(schedule_row)) = get_schedule_row_mut(&tx, db, id) { + if let Ok(schedule_at) = read_schedule_at(&schedule_row, id.at_column) { + // If the schedule is an interval, we handle it as a repeated schedule + if let ScheduleAt::Interval(_) = schedule_at { + return Some(schedule_at); + } + let row_ptr = schedule_row.pointer(); + db.delete(&mut tx, id.table_id, [row_ptr]); + + commit_and_broadcast_deletion_event(tx, module_host); + } else { + log::debug!( + "Failed to read 'scheduled_at' from row: table_id {}, schedule_id {}", + id.table_id, + id.schedule_id + ); + } + } + None +} + +fn commit_and_broadcast_deletion_event(tx: MutTxId, module_host: &ModuleHost) { + let info = module_host.info(); + + let event = ModuleEvent { + timestamp: Timestamp::now(), + caller_identity: info.database_identity, + caller_connection_id: None, + function_call: ModuleFunctionCall::default(), + status: EventStatus::Committed(DatabaseUpdate::default()), + //Keeping them 0 as it is internal transaction, not by reducer + energy_quanta_used: EnergyQuanta { quanta: 0 }, + host_execution_duration: Duration::from_millis(0), + request_id: None, + timer: None, + }; + + if let Err(e) = info.subscriptions.commit_and_broadcast_event(None, event, tx) { + log::error!("Failed to broadcast deletion event: {e:#}"); + } +} + +fn log_scheduled_exec_error(res: &Result, JoinError>) { + match res { + Ok(Ok(_)) => {} + Ok(Err(NoSuchModule)) => log::warn!("module exited while executing scheduled function"), + Err(e) => log::error!("invoking scheduled function failed: {e:#}"), } } pub(crate) fn call_params_for_queued_item( module: &ModuleInfo, db: &RelationalDB, + tx: &MutTxId, item: QueueItem, ) -> anyhow::Result> { Ok(Some(match item { QueueItem::Id { id, at } => { - let Ok(ScheduledFunction { function, bsatn_args }) = db - .with_read_only::<_, anyhow::Result>(Workload::Internal, |tx| { - let schedule_row = get_schedule_row(tx, db, id)?; - let fun = process_schedule(tx, db, id.table_id, &schedule_row)?; - Ok(fun) - }) - else { + let Some(schedule_row) = get_schedule_row_mut(tx, db, id)? else { // If the row is not found, it means the schedule is cancelled by the user. return Ok(None); }; + let ScheduledFunction { function, bsatn_args } = process_schedule(tx, db, id.table_id, &schedule_row)?; let fun_args = FunctionArgs::Bsatn(bsatn_args.into()); function_to_call_params(module, &function, fun_args, Some(at))? @@ -485,6 +555,7 @@ fn function_to_call_params( .map_err(InvalidProcedureArguments)?; (Either::Right(id), args) } else { + // This should be impossible, but let's still return an error to log. return Err(anyhow!("Reducer or procedure `{name}` not found")); }; @@ -502,34 +573,9 @@ fn function_to_call_params( Ok((ts, params)) } -fn commit_and_broadcast_deletion_event(tx: MutTxId, module_host: ModuleHost) { - let caller_identity = module_host.info().database_identity; - - let event = ModuleEvent { - timestamp: Timestamp::now(), - caller_identity, - caller_connection_id: None, - function_call: ModuleFunctionCall::default(), - status: EventStatus::Committed(DatabaseUpdate::default()), - //Keeping them 0 as it is internal transaction, not by reducer - energy_quanta_used: EnergyQuanta { quanta: 0 }, - host_execution_duration: Duration::from_millis(0), - request_id: None, - timer: None, - }; - - if let Err(e) = module_host - .info() - .subscriptions - .commit_and_broadcast_event(None, event, tx) - { - log::error!("Failed to broadcast deletion event: {e:#}"); - } -} - /// Generate [`ScheduledFunction`] for given [`ScheduledFunctionId`]. fn process_schedule( - tx: &TxId, + tx: &MutTxId, db: &RelationalDB, table_id: TableId, schedule_row: &RowRef<'_>, @@ -538,7 +584,7 @@ fn process_schedule( let table_id_col = StScheduledFields::TableId.col_id(); let function_name_col = StScheduledFields::ReducerName.col_id(); let st_scheduled_row = db - .iter_by_col_eq(tx, ST_SCHEDULED_ID, table_id_col, &table_id.into())? + .iter_by_col_eq_mut(tx, ST_SCHEDULED_ID, table_id_col, &table_id.into())? .next() .ok_or_else(|| anyhow!("Scheduled table with id {table_id} entry does not exist in `st_scheduled`"))?; let function = st_scheduled_row.read_col::>(function_name_col)?; @@ -549,28 +595,15 @@ fn process_schedule( }) } -/// Helper to get `schedule_row` with `MutTxId`. -fn get_schedule_row<'a>(tx: &'a TxId, db: &'a RelationalDB, id: ScheduledFunctionId) -> anyhow::Result> { - db.iter_by_col_eq(tx, id.table_id, id.id_column, &id.schedule_id.into())? - .next() - .ok_or_else(|| anyhow!("Schedule with ID {} not found in table {}", id.schedule_id, id.table_id)) - .inspect_err(|err| { - log::debug!("{err}"); - }) -} - -/// Helper to get `schedule_row` with `MutTxId`. +/// Returns the `schedule_row` for `id`. fn get_schedule_row_mut<'a>( tx: &'a MutTxId, db: &'a RelationalDB, id: ScheduledFunctionId, -) -> anyhow::Result> { - db.iter_by_col_eq_mut(tx, id.table_id, id.id_column, &id.schedule_id.into())? - .next() - .ok_or_else(|| anyhow!("Schedule with ID {} not found in table {}", id.schedule_id, id.table_id)) - .inspect_err(|err| { - log::debug!("{err}"); - }) +) -> anyhow::Result>> { + Ok(db + .iter_by_col_eq_mut(tx, id.table_id, id.id_column, &id.schedule_id.into())? + .next()) } /// Helper to get `schedule_id` and `schedule_at` From d52fcfb2a6173648afa6b3f5a1295069e5be9c11 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Tue, 25 Nov 2025 11:25:19 +0100 Subject: [PATCH 07/12] regen module_bindings for sdk tests --- .../src/module_bindings/identity_connected_reducer.rs | 1 + .../src/module_bindings/identity_disconnected_reducer.rs | 1 + .../tests/connect_disconnect_client/src/module_bindings/mod.rs | 2 +- sdks/rust/tests/procedure-client/src/module_bindings/mod.rs | 2 +- .../src/module_bindings/delete_from_btree_u_32_reducer.rs | 1 + .../src/module_bindings/delete_large_table_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_bool_reducer.rs | 1 + .../src/module_bindings/delete_pk_connection_id_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_i_128_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_i_16_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_i_256_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_i_32_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_i_64_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_i_8_reducer.rs | 1 + .../src/module_bindings/delete_pk_identity_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_string_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_u_128_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_u_16_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_u_256_reducer.rs | 1 + .../delete_pk_u_32_insert_pk_u_32_two_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_u_32_reducer.rs | 1 + .../src/module_bindings/delete_pk_u_32_two_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_u_64_reducer.rs | 1 + .../test-client/src/module_bindings/delete_pk_u_8_reducer.rs | 1 + .../src/module_bindings/delete_unique_bool_reducer.rs | 1 + .../src/module_bindings/delete_unique_connection_id_reducer.rs | 1 + .../src/module_bindings/delete_unique_i_128_reducer.rs | 1 + .../src/module_bindings/delete_unique_i_16_reducer.rs | 1 + .../src/module_bindings/delete_unique_i_256_reducer.rs | 1 + .../src/module_bindings/delete_unique_i_32_reducer.rs | 1 + .../src/module_bindings/delete_unique_i_64_reducer.rs | 1 + .../src/module_bindings/delete_unique_i_8_reducer.rs | 1 + .../src/module_bindings/delete_unique_identity_reducer.rs | 1 + .../src/module_bindings/delete_unique_string_reducer.rs | 1 + .../src/module_bindings/delete_unique_u_128_reducer.rs | 1 + .../src/module_bindings/delete_unique_u_16_reducer.rs | 1 + .../src/module_bindings/delete_unique_u_256_reducer.rs | 1 + .../src/module_bindings/delete_unique_u_32_reducer.rs | 1 + .../src/module_bindings/delete_unique_u_64_reducer.rs | 1 + .../src/module_bindings/delete_unique_u_8_reducer.rs | 1 + .../src/module_bindings/insert_call_timestamp_reducer.rs | 1 + .../module_bindings/insert_caller_one_connection_id_reducer.rs | 1 + .../src/module_bindings/insert_caller_one_identity_reducer.rs | 1 + .../module_bindings/insert_caller_pk_connection_id_reducer.rs | 1 + .../src/module_bindings/insert_caller_pk_identity_reducer.rs | 1 + .../insert_caller_unique_connection_id_reducer.rs | 1 + .../module_bindings/insert_caller_unique_identity_reducer.rs | 1 + .../module_bindings/insert_caller_vec_connection_id_reducer.rs | 1 + .../src/module_bindings/insert_caller_vec_identity_reducer.rs | 1 + .../src/module_bindings/insert_into_btree_u_32_reducer.rs | 1 + .../module_bindings/insert_into_indexed_simple_enum_reducer.rs | 1 + .../src/module_bindings/insert_into_pk_btree_u_32_reducer.rs | 1 + .../src/module_bindings/insert_large_table_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_bool_reducer.rs | 1 + .../src/module_bindings/insert_one_byte_struct_reducer.rs | 1 + .../src/module_bindings/insert_one_connection_id_reducer.rs | 1 + .../src/module_bindings/insert_one_enum_with_payload_reducer.rs | 1 + .../insert_one_every_primitive_struct_reducer.rs | 1 + .../src/module_bindings/insert_one_every_vec_struct_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_f_32_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_f_64_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_i_128_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_i_16_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_i_256_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_i_32_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_i_64_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_i_8_reducer.rs | 1 + .../src/module_bindings/insert_one_identity_reducer.rs | 1 + .../src/module_bindings/insert_one_simple_enum_reducer.rs | 1 + .../src/module_bindings/insert_one_string_reducer.rs | 1 + .../src/module_bindings/insert_one_timestamp_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_u_128_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_u_16_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_u_256_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_u_32_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_u_64_reducer.rs | 1 + .../test-client/src/module_bindings/insert_one_u_8_reducer.rs | 1 + .../src/module_bindings/insert_one_unit_struct_reducer.rs | 1 + .../insert_option_every_primitive_struct_reducer.rs | 1 + .../src/module_bindings/insert_option_i_32_reducer.rs | 1 + .../src/module_bindings/insert_option_identity_reducer.rs | 1 + .../src/module_bindings/insert_option_simple_enum_reducer.rs | 1 + .../src/module_bindings/insert_option_string_reducer.rs | 1 + .../module_bindings/insert_option_vec_option_i_32_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_bool_reducer.rs | 1 + .../src/module_bindings/insert_pk_connection_id_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_i_128_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_i_16_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_i_256_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_i_32_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_i_64_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_i_8_reducer.rs | 1 + .../src/module_bindings/insert_pk_identity_reducer.rs | 1 + .../src/module_bindings/insert_pk_simple_enum_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_string_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_u_128_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_u_16_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_u_256_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_u_32_reducer.rs | 1 + .../src/module_bindings/insert_pk_u_32_two_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_u_64_reducer.rs | 1 + .../test-client/src/module_bindings/insert_pk_u_8_reducer.rs | 1 + .../src/module_bindings/insert_primitives_as_strings_reducer.rs | 1 + .../src/module_bindings/insert_table_holds_table_reducer.rs | 1 + .../src/module_bindings/insert_unique_bool_reducer.rs | 1 + .../src/module_bindings/insert_unique_connection_id_reducer.rs | 1 + .../src/module_bindings/insert_unique_i_128_reducer.rs | 1 + .../src/module_bindings/insert_unique_i_16_reducer.rs | 1 + .../src/module_bindings/insert_unique_i_256_reducer.rs | 1 + .../src/module_bindings/insert_unique_i_32_reducer.rs | 1 + .../src/module_bindings/insert_unique_i_64_reducer.rs | 1 + .../src/module_bindings/insert_unique_i_8_reducer.rs | 1 + .../src/module_bindings/insert_unique_identity_reducer.rs | 1 + .../src/module_bindings/insert_unique_string_reducer.rs | 1 + .../src/module_bindings/insert_unique_u_128_reducer.rs | 1 + .../src/module_bindings/insert_unique_u_16_reducer.rs | 1 + .../src/module_bindings/insert_unique_u_256_reducer.rs | 1 + .../src/module_bindings/insert_unique_u_32_reducer.rs | 1 + .../insert_unique_u_32_update_pk_u_32_reducer.rs | 1 + .../src/module_bindings/insert_unique_u_64_reducer.rs | 1 + .../src/module_bindings/insert_unique_u_8_reducer.rs | 1 + .../test-client/src/module_bindings/insert_user_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_bool_reducer.rs | 1 + .../src/module_bindings/insert_vec_byte_struct_reducer.rs | 1 + .../src/module_bindings/insert_vec_connection_id_reducer.rs | 1 + .../src/module_bindings/insert_vec_enum_with_payload_reducer.rs | 1 + .../insert_vec_every_primitive_struct_reducer.rs | 1 + .../src/module_bindings/insert_vec_every_vec_struct_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_f_32_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_f_64_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_i_128_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_i_16_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_i_256_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_i_32_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_i_64_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_i_8_reducer.rs | 1 + .../src/module_bindings/insert_vec_identity_reducer.rs | 1 + .../src/module_bindings/insert_vec_simple_enum_reducer.rs | 1 + .../src/module_bindings/insert_vec_string_reducer.rs | 1 + .../src/module_bindings/insert_vec_timestamp_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_u_128_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_u_16_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_u_256_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_u_32_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_u_64_reducer.rs | 1 + .../test-client/src/module_bindings/insert_vec_u_8_reducer.rs | 1 + .../src/module_bindings/insert_vec_unit_struct_reducer.rs | 1 + sdks/rust/tests/test-client/src/module_bindings/mod.rs | 2 +- .../test-client/src/module_bindings/no_op_succeeds_reducer.rs | 1 + .../src/module_bindings/send_scheduled_message_reducer.rs | 1 + .../src/module_bindings/update_indexed_simple_enum_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_bool_reducer.rs | 1 + .../src/module_bindings/update_pk_connection_id_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_i_128_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_i_16_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_i_256_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_i_32_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_i_64_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_i_8_reducer.rs | 1 + .../src/module_bindings/update_pk_identity_reducer.rs | 1 + .../src/module_bindings/update_pk_simple_enum_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_string_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_u_128_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_u_16_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_u_256_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_u_32_reducer.rs | 1 + .../src/module_bindings/update_pk_u_32_two_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_u_64_reducer.rs | 1 + .../test-client/src/module_bindings/update_pk_u_8_reducer.rs | 1 + .../src/module_bindings/update_unique_bool_reducer.rs | 1 + .../src/module_bindings/update_unique_connection_id_reducer.rs | 1 + .../src/module_bindings/update_unique_i_128_reducer.rs | 1 + .../src/module_bindings/update_unique_i_16_reducer.rs | 1 + .../src/module_bindings/update_unique_i_256_reducer.rs | 1 + .../src/module_bindings/update_unique_i_32_reducer.rs | 1 + .../src/module_bindings/update_unique_i_64_reducer.rs | 1 + .../src/module_bindings/update_unique_i_8_reducer.rs | 1 + .../src/module_bindings/update_unique_identity_reducer.rs | 1 + .../src/module_bindings/update_unique_string_reducer.rs | 1 + .../src/module_bindings/update_unique_u_128_reducer.rs | 1 + .../src/module_bindings/update_unique_u_16_reducer.rs | 1 + .../src/module_bindings/update_unique_u_256_reducer.rs | 1 + .../src/module_bindings/update_unique_u_32_reducer.rs | 1 + .../src/module_bindings/update_unique_u_64_reducer.rs | 1 + .../src/module_bindings/update_unique_u_8_reducer.rs | 1 + 185 files changed, 185 insertions(+), 3 deletions(-) diff --git a/sdks/rust/tests/connect_disconnect_client/src/module_bindings/identity_connected_reducer.rs b/sdks/rust/tests/connect_disconnect_client/src/module_bindings/identity_connected_reducer.rs index 24a603c2d15..5c2d5e0df4e 100644 --- a/sdks/rust/tests/connect_disconnect_client/src/module_bindings/identity_connected_reducer.rs +++ b/sdks/rust/tests/connect_disconnect_client/src/module_bindings/identity_connected_reducer.rs @@ -58,6 +58,7 @@ impl identity_connected for super::RemoteReducers { IdentityConnectedCallbackId(self.imp.on_reducer( "identity_connected", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/connect_disconnect_client/src/module_bindings/identity_disconnected_reducer.rs b/sdks/rust/tests/connect_disconnect_client/src/module_bindings/identity_disconnected_reducer.rs index a212a123cd0..ae4679d09aa 100644 --- a/sdks/rust/tests/connect_disconnect_client/src/module_bindings/identity_disconnected_reducer.rs +++ b/sdks/rust/tests/connect_disconnect_client/src/module_bindings/identity_disconnected_reducer.rs @@ -59,6 +59,7 @@ impl identity_disconnected for super::RemoteReducers { IdentityDisconnectedCallbackId(self.imp.on_reducer( "identity_disconnected", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/connect_disconnect_client/src/module_bindings/mod.rs b/sdks/rust/tests/connect_disconnect_client/src/module_bindings/mod.rs index 6b3edda4f10..dbeaf3f6881 100644 --- a/sdks/rust/tests/connect_disconnect_client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/connect_disconnect_client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.6.0 (commit 3f1de9e09651bc412de3cb9daf49cc553ebb81e8). +// This was generated using spacetimedb cli version 1.9.0 (commit b5f446820a6922d047be45dad717c04afd89bdaf). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs b/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs index 130d0653681..cad15b36b13 100644 --- a/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.8.0 (commit 1eb9c6a2b20507afdd96bda1c2b68d5c9aaed093). +// This was generated using spacetimedb cli version 1.9.0 (commit b5f446820a6922d047be45dad717c04afd89bdaf). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_from_btree_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_from_btree_u_32_reducer.rs index 253f3237c5c..026f1c00846 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_from_btree_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_from_btree_u_32_reducer.rs @@ -63,6 +63,7 @@ impl delete_from_btree_u_32 for super::RemoteReducers { DeleteFromBtreeU32CallbackId(self.imp.on_reducer( "delete_from_btree_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_large_table_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_large_table_reducer.rs index 3868cce671d..0479ba3065e 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_large_table_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_large_table_reducer.rs @@ -235,6 +235,7 @@ impl delete_large_table for super::RemoteReducers { DeleteLargeTableCallbackId(self.imp.on_reducer( "delete_large_table", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_bool_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_bool_reducer.rs index 21439a8e437..78d1b3ce32f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_bool_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_bool_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_bool for super::RemoteReducers { DeletePkBoolCallbackId(self.imp.on_reducer( "delete_pk_bool", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_connection_id_reducer.rs index 068ba3462ae..f1e15da77d7 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_connection_id_reducer.rs @@ -61,6 +61,7 @@ impl delete_pk_connection_id for super::RemoteReducers { DeletePkConnectionIdCallbackId(self.imp.on_reducer( "delete_pk_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_128_reducer.rs index b80b44dc6fb..b52d3abbf3d 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_128_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_i_128 for super::RemoteReducers { DeletePkI128CallbackId(self.imp.on_reducer( "delete_pk_i128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_16_reducer.rs index 50be99e7215..4cb0d2a3f5b 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_16_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_i_16 for super::RemoteReducers { DeletePkI16CallbackId(self.imp.on_reducer( "delete_pk_i16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_256_reducer.rs index 1d1540680be..60edf88ba90 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_256_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_i_256 for super::RemoteReducers { DeletePkI256CallbackId(self.imp.on_reducer( "delete_pk_i256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_32_reducer.rs index 7fac9c7af5d..a3f421845ed 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_32_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_i_32 for super::RemoteReducers { DeletePkI32CallbackId(self.imp.on_reducer( "delete_pk_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_64_reducer.rs index 0f8f93d5171..ef0af58a0bf 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_64_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_i_64 for super::RemoteReducers { DeletePkI64CallbackId(self.imp.on_reducer( "delete_pk_i64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_8_reducer.rs index 0851a435453..6b4c53d2ba8 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_i_8_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_i_8 for super::RemoteReducers { DeletePkI8CallbackId(self.imp.on_reducer( "delete_pk_i8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_identity_reducer.rs index c2997d710b7..baaa952b628 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_identity_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_identity for super::RemoteReducers { DeletePkIdentityCallbackId(self.imp.on_reducer( "delete_pk_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_string_reducer.rs index 56d23425ef7..bac9d67fa58 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_string_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_string for super::RemoteReducers { DeletePkStringCallbackId(self.imp.on_reducer( "delete_pk_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_128_reducer.rs index 1ef755d499e..8077f0a6a31 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_128_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_u_128 for super::RemoteReducers { DeletePkU128CallbackId(self.imp.on_reducer( "delete_pk_u128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_16_reducer.rs index cbf1d8b4ae8..499b35a321e 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_16_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_u_16 for super::RemoteReducers { DeletePkU16CallbackId(self.imp.on_reducer( "delete_pk_u16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_256_reducer.rs index 5ca24b89661..3bd433f80a3 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_256_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_u_256 for super::RemoteReducers { DeletePkU256CallbackId(self.imp.on_reducer( "delete_pk_u256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_insert_pk_u_32_two_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_insert_pk_u_32_two_reducer.rs index d994335c908..47b56608e83 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_insert_pk_u_32_two_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_insert_pk_u_32_two_reducer.rs @@ -67,6 +67,7 @@ impl delete_pk_u_32_insert_pk_u_32_two for super::RemoteReducers { DeletePkU32InsertPkU32TwoCallbackId(self.imp.on_reducer( "delete_pk_u32_insert_pk_u32_two", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_reducer.rs index 01be43dbf06..7016d827a90 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_u_32 for super::RemoteReducers { DeletePkU32CallbackId(self.imp.on_reducer( "delete_pk_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_two_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_two_reducer.rs index 6447fa11424..654f8c10f84 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_two_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_32_two_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_u_32_two for super::RemoteReducers { DeletePkU32TwoCallbackId(self.imp.on_reducer( "delete_pk_u32_two", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_64_reducer.rs index 65e1a83d0f3..d9383895e3d 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_64_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_u_64 for super::RemoteReducers { DeletePkU64CallbackId(self.imp.on_reducer( "delete_pk_u64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_8_reducer.rs index afcd536a9dc..cf6cbd37e1c 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_pk_u_8_reducer.rs @@ -60,6 +60,7 @@ impl delete_pk_u_8 for super::RemoteReducers { DeletePkU8CallbackId(self.imp.on_reducer( "delete_pk_u8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_bool_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_bool_reducer.rs index 12aa1a800a2..c9543484d70 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_bool_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_bool_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_bool for super::RemoteReducers { DeleteUniqueBoolCallbackId(self.imp.on_reducer( "delete_unique_bool", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_connection_id_reducer.rs index abe1da6059b..0e0683a1dca 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_connection_id_reducer.rs @@ -61,6 +61,7 @@ impl delete_unique_connection_id for super::RemoteReducers { DeleteUniqueConnectionIdCallbackId(self.imp.on_reducer( "delete_unique_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_128_reducer.rs index 107182bc55e..ffd1928d784 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_128_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_i_128 for super::RemoteReducers { DeleteUniqueI128CallbackId(self.imp.on_reducer( "delete_unique_i128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_16_reducer.rs index 5543908934d..350f046db1f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_16_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_i_16 for super::RemoteReducers { DeleteUniqueI16CallbackId(self.imp.on_reducer( "delete_unique_i16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_256_reducer.rs index 8d1a964bcda..1ba46a87171 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_256_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_i_256 for super::RemoteReducers { DeleteUniqueI256CallbackId(self.imp.on_reducer( "delete_unique_i256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_32_reducer.rs index 7e0d9763f8a..f3bcf50a80d 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_32_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_i_32 for super::RemoteReducers { DeleteUniqueI32CallbackId(self.imp.on_reducer( "delete_unique_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_64_reducer.rs index 42db384c123..e27ce8855b3 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_64_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_i_64 for super::RemoteReducers { DeleteUniqueI64CallbackId(self.imp.on_reducer( "delete_unique_i64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_8_reducer.rs index d684723a86f..c1a6269c739 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_i_8_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_i_8 for super::RemoteReducers { DeleteUniqueI8CallbackId(self.imp.on_reducer( "delete_unique_i8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_identity_reducer.rs index b2c63ffd007..3391f357370 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_identity_reducer.rs @@ -61,6 +61,7 @@ impl delete_unique_identity for super::RemoteReducers { DeleteUniqueIdentityCallbackId(self.imp.on_reducer( "delete_unique_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_string_reducer.rs index 76cbf1ccd7f..4a993113790 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_string_reducer.rs @@ -61,6 +61,7 @@ impl delete_unique_string for super::RemoteReducers { DeleteUniqueStringCallbackId(self.imp.on_reducer( "delete_unique_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_128_reducer.rs index 3fedfae6d53..88642c1cae5 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_128_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_u_128 for super::RemoteReducers { DeleteUniqueU128CallbackId(self.imp.on_reducer( "delete_unique_u128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_16_reducer.rs index 42b153d396a..4911258fda4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_16_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_u_16 for super::RemoteReducers { DeleteUniqueU16CallbackId(self.imp.on_reducer( "delete_unique_u16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_256_reducer.rs index 858f52966c9..c48d4416dc5 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_256_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_u_256 for super::RemoteReducers { DeleteUniqueU256CallbackId(self.imp.on_reducer( "delete_unique_u256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_32_reducer.rs index 3a93d53aa31..8ca56e873b4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_32_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_u_32 for super::RemoteReducers { DeleteUniqueU32CallbackId(self.imp.on_reducer( "delete_unique_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_64_reducer.rs index a62cf058d3e..0d61da49a23 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_64_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_u_64 for super::RemoteReducers { DeleteUniqueU64CallbackId(self.imp.on_reducer( "delete_unique_u64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_8_reducer.rs index 432230dcfa1..9a4e5ac28f8 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/delete_unique_u_8_reducer.rs @@ -60,6 +60,7 @@ impl delete_unique_u_8 for super::RemoteReducers { DeleteUniqueU8CallbackId(self.imp.on_reducer( "delete_unique_u8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_call_timestamp_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_call_timestamp_reducer.rs index 0cdf07f8bde..5515212c495 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_call_timestamp_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_call_timestamp_reducer.rs @@ -59,6 +59,7 @@ impl insert_call_timestamp for super::RemoteReducers { InsertCallTimestampCallbackId(self.imp.on_reducer( "insert_call_timestamp", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_one_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_one_connection_id_reducer.rs index 12ad2f96362..a680a3b2346 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_one_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_one_connection_id_reducer.rs @@ -59,6 +59,7 @@ impl insert_caller_one_connection_id for super::RemoteReducers { InsertCallerOneConnectionIdCallbackId(self.imp.on_reducer( "insert_caller_one_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_one_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_one_identity_reducer.rs index 699e2a82bdb..26737936ef3 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_one_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_one_identity_reducer.rs @@ -59,6 +59,7 @@ impl insert_caller_one_identity for super::RemoteReducers { InsertCallerOneIdentityCallbackId(self.imp.on_reducer( "insert_caller_one_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_pk_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_pk_connection_id_reducer.rs index 5e9fd64a6b4..0b2af29fee8 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_pk_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_pk_connection_id_reducer.rs @@ -63,6 +63,7 @@ impl insert_caller_pk_connection_id for super::RemoteReducers { InsertCallerPkConnectionIdCallbackId(self.imp.on_reducer( "insert_caller_pk_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_pk_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_pk_identity_reducer.rs index b93b344f6d2..ebcc0b605f4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_pk_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_pk_identity_reducer.rs @@ -61,6 +61,7 @@ impl insert_caller_pk_identity for super::RemoteReducers { InsertCallerPkIdentityCallbackId(self.imp.on_reducer( "insert_caller_pk_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_unique_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_unique_connection_id_reducer.rs index 99dcd0ea84e..bb17ee7a9a9 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_unique_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_unique_connection_id_reducer.rs @@ -63,6 +63,7 @@ impl insert_caller_unique_connection_id for super::RemoteReducers { InsertCallerUniqueConnectionIdCallbackId(self.imp.on_reducer( "insert_caller_unique_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_unique_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_unique_identity_reducer.rs index df09e23cfe5..f32d4ce2b31 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_unique_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_unique_identity_reducer.rs @@ -61,6 +61,7 @@ impl insert_caller_unique_identity for super::RemoteReducers { InsertCallerUniqueIdentityCallbackId(self.imp.on_reducer( "insert_caller_unique_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_vec_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_vec_connection_id_reducer.rs index 358fbfe7e37..ecd40cbd38d 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_vec_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_vec_connection_id_reducer.rs @@ -59,6 +59,7 @@ impl insert_caller_vec_connection_id for super::RemoteReducers { InsertCallerVecConnectionIdCallbackId(self.imp.on_reducer( "insert_caller_vec_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_vec_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_vec_identity_reducer.rs index aa86d581895..dab3cfd4220 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_caller_vec_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_caller_vec_identity_reducer.rs @@ -59,6 +59,7 @@ impl insert_caller_vec_identity for super::RemoteReducers { InsertCallerVecIdentityCallbackId(self.imp.on_reducer( "insert_caller_vec_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_into_btree_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_into_btree_u_32_reducer.rs index 51433ea79a4..c336536866d 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_into_btree_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_into_btree_u_32_reducer.rs @@ -63,6 +63,7 @@ impl insert_into_btree_u_32 for super::RemoteReducers { InsertIntoBtreeU32CallbackId(self.imp.on_reducer( "insert_into_btree_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_into_indexed_simple_enum_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_into_indexed_simple_enum_reducer.rs index da7d8dbd37a..8ed8d5f3bbc 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_into_indexed_simple_enum_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_into_indexed_simple_enum_reducer.rs @@ -63,6 +63,7 @@ impl insert_into_indexed_simple_enum for super::RemoteReducers { InsertIntoIndexedSimpleEnumCallbackId(self.imp.on_reducer( "insert_into_indexed_simple_enum", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_into_pk_btree_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_into_pk_btree_u_32_reducer.rs index 2222fdf2de8..963eb8688db 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_into_pk_btree_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_into_pk_btree_u_32_reducer.rs @@ -70,6 +70,7 @@ impl insert_into_pk_btree_u_32 for super::RemoteReducers { InsertIntoPkBtreeU32CallbackId(self.imp.on_reducer( "insert_into_pk_btree_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_large_table_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_large_table_reducer.rs index 0bdb6eb522b..c1e3a86fffa 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_large_table_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_large_table_reducer.rs @@ -235,6 +235,7 @@ impl insert_large_table for super::RemoteReducers { InsertLargeTableCallbackId(self.imp.on_reducer( "insert_large_table", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_bool_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_bool_reducer.rs index 0ce8f63061b..b3c62307f46 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_bool_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_bool_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_bool for super::RemoteReducers { InsertOneBoolCallbackId(self.imp.on_reducer( "insert_one_bool", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_byte_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_byte_struct_reducer.rs index c88f6bff8f9..b0c2ed2dccc 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_byte_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_byte_struct_reducer.rs @@ -63,6 +63,7 @@ impl insert_one_byte_struct for super::RemoteReducers { InsertOneByteStructCallbackId(self.imp.on_reducer( "insert_one_byte_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_connection_id_reducer.rs index 941f07ba299..fa79a228552 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_connection_id_reducer.rs @@ -61,6 +61,7 @@ impl insert_one_connection_id for super::RemoteReducers { InsertOneConnectionIdCallbackId(self.imp.on_reducer( "insert_one_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_enum_with_payload_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_enum_with_payload_reducer.rs index bb151cfdbbf..2a88261fd81 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_enum_with_payload_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_enum_with_payload_reducer.rs @@ -63,6 +63,7 @@ impl insert_one_enum_with_payload for super::RemoteReducers { InsertOneEnumWithPayloadCallbackId(self.imp.on_reducer( "insert_one_enum_with_payload", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_every_primitive_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_every_primitive_struct_reducer.rs index a46083036c5..a16b33cfef2 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_every_primitive_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_every_primitive_struct_reducer.rs @@ -65,6 +65,7 @@ impl insert_one_every_primitive_struct for super::RemoteReducers { InsertOneEveryPrimitiveStructCallbackId(self.imp.on_reducer( "insert_one_every_primitive_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_every_vec_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_every_vec_struct_reducer.rs index 3d36a656f1a..17124cb9167 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_every_vec_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_every_vec_struct_reducer.rs @@ -63,6 +63,7 @@ impl insert_one_every_vec_struct for super::RemoteReducers { InsertOneEveryVecStructCallbackId(self.imp.on_reducer( "insert_one_every_vec_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_f_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_f_32_reducer.rs index 77f93f05096..5c3ef86518a 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_f_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_f_32_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_f_32 for super::RemoteReducers { InsertOneF32CallbackId(self.imp.on_reducer( "insert_one_f32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_f_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_f_64_reducer.rs index 9df1ac4e007..4b3ca4f731d 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_f_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_f_64_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_f_64 for super::RemoteReducers { InsertOneF64CallbackId(self.imp.on_reducer( "insert_one_f64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_128_reducer.rs index f6aa5ce759c..6dd93f3b546 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_128_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_i_128 for super::RemoteReducers { InsertOneI128CallbackId(self.imp.on_reducer( "insert_one_i128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_16_reducer.rs index 65479b3f926..3ce9f12b8ac 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_16_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_i_16 for super::RemoteReducers { InsertOneI16CallbackId(self.imp.on_reducer( "insert_one_i16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_256_reducer.rs index 7896d26eaa9..e523b652af4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_256_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_i_256 for super::RemoteReducers { InsertOneI256CallbackId(self.imp.on_reducer( "insert_one_i256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_32_reducer.rs index d75e70880c4..d8208e1dea7 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_32_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_i_32 for super::RemoteReducers { InsertOneI32CallbackId(self.imp.on_reducer( "insert_one_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_64_reducer.rs index 86a1071d6c6..1bc944399a4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_64_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_i_64 for super::RemoteReducers { InsertOneI64CallbackId(self.imp.on_reducer( "insert_one_i64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_8_reducer.rs index a436e447d8a..330e86ffe9c 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_i_8_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_i_8 for super::RemoteReducers { InsertOneI8CallbackId(self.imp.on_reducer( "insert_one_i8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_identity_reducer.rs index 7a8efaa5869..c34fe066ced 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_identity_reducer.rs @@ -61,6 +61,7 @@ impl insert_one_identity for super::RemoteReducers { InsertOneIdentityCallbackId(self.imp.on_reducer( "insert_one_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_simple_enum_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_simple_enum_reducer.rs index 56080bd9ac6..c70dc328212 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_simple_enum_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_simple_enum_reducer.rs @@ -63,6 +63,7 @@ impl insert_one_simple_enum for super::RemoteReducers { InsertOneSimpleEnumCallbackId(self.imp.on_reducer( "insert_one_simple_enum", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_string_reducer.rs index 0b61033f0a6..09d1e0451f8 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_string_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_string for super::RemoteReducers { InsertOneStringCallbackId(self.imp.on_reducer( "insert_one_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_timestamp_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_timestamp_reducer.rs index c36926c996c..36710889d25 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_timestamp_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_timestamp_reducer.rs @@ -61,6 +61,7 @@ impl insert_one_timestamp for super::RemoteReducers { InsertOneTimestampCallbackId(self.imp.on_reducer( "insert_one_timestamp", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_128_reducer.rs index cf4128a5f8b..3ee76e546e4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_128_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_u_128 for super::RemoteReducers { InsertOneU128CallbackId(self.imp.on_reducer( "insert_one_u128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_16_reducer.rs index 858d3ad5fce..3c758866a7d 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_16_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_u_16 for super::RemoteReducers { InsertOneU16CallbackId(self.imp.on_reducer( "insert_one_u16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_256_reducer.rs index 9abd6dd9b8a..57a33eb8637 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_256_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_u_256 for super::RemoteReducers { InsertOneU256CallbackId(self.imp.on_reducer( "insert_one_u256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_32_reducer.rs index 542c2beef37..ad4aec62f5b 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_32_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_u_32 for super::RemoteReducers { InsertOneU32CallbackId(self.imp.on_reducer( "insert_one_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_64_reducer.rs index 59ef420fd11..4cc7b72ba84 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_64_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_u_64 for super::RemoteReducers { InsertOneU64CallbackId(self.imp.on_reducer( "insert_one_u64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_8_reducer.rs index 6faea844e97..50a63a1fca9 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_u_8_reducer.rs @@ -60,6 +60,7 @@ impl insert_one_u_8 for super::RemoteReducers { InsertOneU8CallbackId(self.imp.on_reducer( "insert_one_u8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_one_unit_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_one_unit_struct_reducer.rs index 44e0cc4fa57..b49838488ff 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_one_unit_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_one_unit_struct_reducer.rs @@ -63,6 +63,7 @@ impl insert_one_unit_struct for super::RemoteReducers { InsertOneUnitStructCallbackId(self.imp.on_reducer( "insert_one_unit_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_option_every_primitive_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_option_every_primitive_struct_reducer.rs index 6ac4d1d2b55..26b173478d2 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_option_every_primitive_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_option_every_primitive_struct_reducer.rs @@ -65,6 +65,7 @@ impl insert_option_every_primitive_struct for super::RemoteReducers { InsertOptionEveryPrimitiveStructCallbackId(self.imp.on_reducer( "insert_option_every_primitive_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_option_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_option_i_32_reducer.rs index 7dfb6737716..07f0ddb9cd2 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_option_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_option_i_32_reducer.rs @@ -60,6 +60,7 @@ impl insert_option_i_32 for super::RemoteReducers { InsertOptionI32CallbackId(self.imp.on_reducer( "insert_option_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_option_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_option_identity_reducer.rs index e2cbc8b0118..87a7e88c69e 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_option_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_option_identity_reducer.rs @@ -61,6 +61,7 @@ impl insert_option_identity for super::RemoteReducers { InsertOptionIdentityCallbackId(self.imp.on_reducer( "insert_option_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_option_simple_enum_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_option_simple_enum_reducer.rs index 6b517828e53..052d201865c 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_option_simple_enum_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_option_simple_enum_reducer.rs @@ -63,6 +63,7 @@ impl insert_option_simple_enum for super::RemoteReducers { InsertOptionSimpleEnumCallbackId(self.imp.on_reducer( "insert_option_simple_enum", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_option_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_option_string_reducer.rs index 66ac1998cbe..0b12a05718f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_option_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_option_string_reducer.rs @@ -61,6 +61,7 @@ impl insert_option_string for super::RemoteReducers { InsertOptionStringCallbackId(self.imp.on_reducer( "insert_option_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_option_vec_option_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_option_vec_option_i_32_reducer.rs index 39ea1d311b5..64611d9780a 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_option_vec_option_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_option_vec_option_i_32_reducer.rs @@ -61,6 +61,7 @@ impl insert_option_vec_option_i_32 for super::RemoteReducers { InsertOptionVecOptionI32CallbackId(self.imp.on_reducer( "insert_option_vec_option_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_bool_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_bool_reducer.rs index 912cbd52828..48626d589e7 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_bool_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_bool_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_bool for super::RemoteReducers { InsertPkBoolCallbackId(self.imp.on_reducer( "insert_pk_bool", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_connection_id_reducer.rs index 525b84f23b2..910110dcc42 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_connection_id_reducer.rs @@ -65,6 +65,7 @@ impl insert_pk_connection_id for super::RemoteReducers { InsertPkConnectionIdCallbackId(self.imp.on_reducer( "insert_pk_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_128_reducer.rs index 45d43a13fec..8a4200acb5f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_128_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_i_128 for super::RemoteReducers { InsertPkI128CallbackId(self.imp.on_reducer( "insert_pk_i128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_16_reducer.rs index 8b38a795e9b..4c625c08661 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_16_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_i_16 for super::RemoteReducers { InsertPkI16CallbackId(self.imp.on_reducer( "insert_pk_i16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_256_reducer.rs index a53bb3673f5..a419c2d3a60 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_256_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_i_256 for super::RemoteReducers { InsertPkI256CallbackId(self.imp.on_reducer( "insert_pk_i256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_32_reducer.rs index baacacbcd8d..79d161a9b8a 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_32_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_i_32 for super::RemoteReducers { InsertPkI32CallbackId(self.imp.on_reducer( "insert_pk_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_64_reducer.rs index 09ac95db544..7442c42093c 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_64_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_i_64 for super::RemoteReducers { InsertPkI64CallbackId(self.imp.on_reducer( "insert_pk_i64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_8_reducer.rs index b12769ac1e2..e48fc9e31be 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_i_8_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_i_8 for super::RemoteReducers { InsertPkI8CallbackId(self.imp.on_reducer( "insert_pk_i8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_identity_reducer.rs index fbc99aeeae6..4827ccd141f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_identity_reducer.rs @@ -65,6 +65,7 @@ impl insert_pk_identity for super::RemoteReducers { InsertPkIdentityCallbackId(self.imp.on_reducer( "insert_pk_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_simple_enum_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_simple_enum_reducer.rs index 39828792c08..f5e57209d83 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_simple_enum_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_simple_enum_reducer.rs @@ -67,6 +67,7 @@ impl insert_pk_simple_enum for super::RemoteReducers { InsertPkSimpleEnumCallbackId(self.imp.on_reducer( "insert_pk_simple_enum", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_string_reducer.rs index 8c3efa2dd28..1b331e30262 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_string_reducer.rs @@ -65,6 +65,7 @@ impl insert_pk_string for super::RemoteReducers { InsertPkStringCallbackId(self.imp.on_reducer( "insert_pk_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_128_reducer.rs index 461fbf4076e..f5f9538a5cb 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_128_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_u_128 for super::RemoteReducers { InsertPkU128CallbackId(self.imp.on_reducer( "insert_pk_u128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_16_reducer.rs index 649bfa6c788..e6b1565307b 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_16_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_u_16 for super::RemoteReducers { InsertPkU16CallbackId(self.imp.on_reducer( "insert_pk_u16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_256_reducer.rs index 1d63f53d81b..fcb9bfe588f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_256_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_u_256 for super::RemoteReducers { InsertPkU256CallbackId(self.imp.on_reducer( "insert_pk_u256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_32_reducer.rs index e4120ffa379..bfe5e6eb288 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_32_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_u_32 for super::RemoteReducers { InsertPkU32CallbackId(self.imp.on_reducer( "insert_pk_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_32_two_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_32_two_reducer.rs index 85c699f3653..a7afded8896 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_32_two_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_32_two_reducer.rs @@ -65,6 +65,7 @@ impl insert_pk_u_32_two for super::RemoteReducers { InsertPkU32TwoCallbackId(self.imp.on_reducer( "insert_pk_u32_two", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_64_reducer.rs index ca7b2484c67..26afc4482d2 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_64_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_u_64 for super::RemoteReducers { InsertPkU64CallbackId(self.imp.on_reducer( "insert_pk_u64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_8_reducer.rs index dc7343c410b..3f1da0eb411 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_pk_u_8_reducer.rs @@ -64,6 +64,7 @@ impl insert_pk_u_8 for super::RemoteReducers { InsertPkU8CallbackId(self.imp.on_reducer( "insert_pk_u8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_primitives_as_strings_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_primitives_as_strings_reducer.rs index cd70a1aff9b..2fe6bfab202 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_primitives_as_strings_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_primitives_as_strings_reducer.rs @@ -63,6 +63,7 @@ impl insert_primitives_as_strings for super::RemoteReducers { InsertPrimitivesAsStringsCallbackId(self.imp.on_reducer( "insert_primitives_as_strings", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_table_holds_table_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_table_holds_table_reducer.rs index 1ed4921a191..8470cccfe6e 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_table_holds_table_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_table_holds_table_reducer.rs @@ -65,6 +65,7 @@ impl insert_table_holds_table for super::RemoteReducers { InsertTableHoldsTableCallbackId(self.imp.on_reducer( "insert_table_holds_table", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_bool_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_bool_reducer.rs index 7b0b7000e76..260da1ae3f4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_bool_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_bool_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_bool for super::RemoteReducers { InsertUniqueBoolCallbackId(self.imp.on_reducer( "insert_unique_bool", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_connection_id_reducer.rs index fa4fc140d78..7611143c646 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_connection_id_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_connection_id for super::RemoteReducers { InsertUniqueConnectionIdCallbackId(self.imp.on_reducer( "insert_unique_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_128_reducer.rs index 4a7591014d4..e15b8d84ff1 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_128_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_i_128 for super::RemoteReducers { InsertUniqueI128CallbackId(self.imp.on_reducer( "insert_unique_i128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_16_reducer.rs index 7120a2e3a5f..39166251964 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_16_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_i_16 for super::RemoteReducers { InsertUniqueI16CallbackId(self.imp.on_reducer( "insert_unique_i16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_256_reducer.rs index 40e4109d347..c97d81d655f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_256_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_i_256 for super::RemoteReducers { InsertUniqueI256CallbackId(self.imp.on_reducer( "insert_unique_i256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_32_reducer.rs index 9c3e2fde633..0b3d69f3d57 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_32_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_i_32 for super::RemoteReducers { InsertUniqueI32CallbackId(self.imp.on_reducer( "insert_unique_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_64_reducer.rs index 51264c9d9c2..9d83029c2c4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_64_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_i_64 for super::RemoteReducers { InsertUniqueI64CallbackId(self.imp.on_reducer( "insert_unique_i64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_8_reducer.rs index 733b10398a7..9602e71b686 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_i_8_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_i_8 for super::RemoteReducers { InsertUniqueI8CallbackId(self.imp.on_reducer( "insert_unique_i8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_identity_reducer.rs index 18377c08027..b9c4facb3bb 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_identity_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_identity for super::RemoteReducers { InsertUniqueIdentityCallbackId(self.imp.on_reducer( "insert_unique_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_string_reducer.rs index 78f98fe3281..3dd60301e78 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_string_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_string for super::RemoteReducers { InsertUniqueStringCallbackId(self.imp.on_reducer( "insert_unique_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_128_reducer.rs index a986d4debdb..9414bcc1012 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_128_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_u_128 for super::RemoteReducers { InsertUniqueU128CallbackId(self.imp.on_reducer( "insert_unique_u128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_16_reducer.rs index c516504a333..331a7fbb3ef 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_16_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_u_16 for super::RemoteReducers { InsertUniqueU16CallbackId(self.imp.on_reducer( "insert_unique_u16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_256_reducer.rs index 8c593c53c1a..dcebf52ac67 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_256_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_u_256 for super::RemoteReducers { InsertUniqueU256CallbackId(self.imp.on_reducer( "insert_unique_u256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_32_reducer.rs index 3edaced003c..af5fe86dd00 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_32_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_u_32 for super::RemoteReducers { InsertUniqueU32CallbackId(self.imp.on_reducer( "insert_unique_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_32_update_pk_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_32_update_pk_u_32_reducer.rs index a1b67578b77..89c75bbe1e9 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_32_update_pk_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_32_update_pk_u_32_reducer.rs @@ -69,6 +69,7 @@ impl insert_unique_u_32_update_pk_u_32 for super::RemoteReducers { InsertUniqueU32UpdatePkU32CallbackId(self.imp.on_reducer( "insert_unique_u32_update_pk_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_64_reducer.rs index 71300499370..58c37ed40df 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_64_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_u_64 for super::RemoteReducers { InsertUniqueU64CallbackId(self.imp.on_reducer( "insert_unique_u64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_8_reducer.rs index 95ac5fd782c..492986b012b 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_unique_u_8_reducer.rs @@ -65,6 +65,7 @@ impl insert_unique_u_8 for super::RemoteReducers { InsertUniqueU8CallbackId(self.imp.on_reducer( "insert_unique_u8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_user_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_user_reducer.rs index 49d319ba9f7..c30d8a2f779 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_user_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_user_reducer.rs @@ -64,6 +64,7 @@ impl insert_user for super::RemoteReducers { InsertUserCallbackId(self.imp.on_reducer( "insert_user", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_bool_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_bool_reducer.rs index 130be53854e..28786082c68 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_bool_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_bool_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_bool for super::RemoteReducers { InsertVecBoolCallbackId(self.imp.on_reducer( "insert_vec_bool", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_byte_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_byte_struct_reducer.rs index a305d782843..4e4b300e90f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_byte_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_byte_struct_reducer.rs @@ -63,6 +63,7 @@ impl insert_vec_byte_struct for super::RemoteReducers { InsertVecByteStructCallbackId(self.imp.on_reducer( "insert_vec_byte_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_connection_id_reducer.rs index 2337cb46256..8877e652751 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_connection_id_reducer.rs @@ -61,6 +61,7 @@ impl insert_vec_connection_id for super::RemoteReducers { InsertVecConnectionIdCallbackId(self.imp.on_reducer( "insert_vec_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_enum_with_payload_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_enum_with_payload_reducer.rs index eb7583db4ce..13e215a8c85 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_enum_with_payload_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_enum_with_payload_reducer.rs @@ -63,6 +63,7 @@ impl insert_vec_enum_with_payload for super::RemoteReducers { InsertVecEnumWithPayloadCallbackId(self.imp.on_reducer( "insert_vec_enum_with_payload", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_every_primitive_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_every_primitive_struct_reducer.rs index 8cbf906b0f9..00e7e9dc544 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_every_primitive_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_every_primitive_struct_reducer.rs @@ -65,6 +65,7 @@ impl insert_vec_every_primitive_struct for super::RemoteReducers { InsertVecEveryPrimitiveStructCallbackId(self.imp.on_reducer( "insert_vec_every_primitive_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_every_vec_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_every_vec_struct_reducer.rs index 698ea45f6c5..1ab1122268b 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_every_vec_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_every_vec_struct_reducer.rs @@ -63,6 +63,7 @@ impl insert_vec_every_vec_struct for super::RemoteReducers { InsertVecEveryVecStructCallbackId(self.imp.on_reducer( "insert_vec_every_vec_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_f_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_f_32_reducer.rs index bc3c6a9106e..f399dafc3bb 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_f_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_f_32_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_f_32 for super::RemoteReducers { InsertVecF32CallbackId(self.imp.on_reducer( "insert_vec_f32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_f_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_f_64_reducer.rs index 745810f06f4..3ba6fb8a589 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_f_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_f_64_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_f_64 for super::RemoteReducers { InsertVecF64CallbackId(self.imp.on_reducer( "insert_vec_f64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_128_reducer.rs index fa600ba1747..7c18ff98d38 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_128_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_i_128 for super::RemoteReducers { InsertVecI128CallbackId(self.imp.on_reducer( "insert_vec_i128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_16_reducer.rs index 5a81876a1e2..91e37e5fd7f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_16_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_i_16 for super::RemoteReducers { InsertVecI16CallbackId(self.imp.on_reducer( "insert_vec_i16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_256_reducer.rs index cf444eeaad1..02ec2622954 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_256_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_i_256 for super::RemoteReducers { InsertVecI256CallbackId(self.imp.on_reducer( "insert_vec_i256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_32_reducer.rs index 81f6f8fb803..74110670c5a 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_32_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_i_32 for super::RemoteReducers { InsertVecI32CallbackId(self.imp.on_reducer( "insert_vec_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_64_reducer.rs index 5985aa2175b..d42786b498e 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_64_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_i_64 for super::RemoteReducers { InsertVecI64CallbackId(self.imp.on_reducer( "insert_vec_i64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_8_reducer.rs index fe201475e66..550e6ded58e 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_i_8_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_i_8 for super::RemoteReducers { InsertVecI8CallbackId(self.imp.on_reducer( "insert_vec_i8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_identity_reducer.rs index 51659eb7992..c0ef1991450 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_identity_reducer.rs @@ -61,6 +61,7 @@ impl insert_vec_identity for super::RemoteReducers { InsertVecIdentityCallbackId(self.imp.on_reducer( "insert_vec_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_simple_enum_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_simple_enum_reducer.rs index f4655cdd453..2ea7b9c39ca 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_simple_enum_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_simple_enum_reducer.rs @@ -63,6 +63,7 @@ impl insert_vec_simple_enum for super::RemoteReducers { InsertVecSimpleEnumCallbackId(self.imp.on_reducer( "insert_vec_simple_enum", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_string_reducer.rs index 3a541835797..6ca50f9f83b 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_string_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_string for super::RemoteReducers { InsertVecStringCallbackId(self.imp.on_reducer( "insert_vec_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_timestamp_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_timestamp_reducer.rs index e681a7a785c..275ea127408 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_timestamp_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_timestamp_reducer.rs @@ -61,6 +61,7 @@ impl insert_vec_timestamp for super::RemoteReducers { InsertVecTimestampCallbackId(self.imp.on_reducer( "insert_vec_timestamp", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_128_reducer.rs index 775e04a9f55..7b9f118d31d 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_128_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_u_128 for super::RemoteReducers { InsertVecU128CallbackId(self.imp.on_reducer( "insert_vec_u128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_16_reducer.rs index dee03e2d161..c0612ed8bcf 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_16_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_u_16 for super::RemoteReducers { InsertVecU16CallbackId(self.imp.on_reducer( "insert_vec_u16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_256_reducer.rs index c10c305cb30..12526233eb2 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_256_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_u_256 for super::RemoteReducers { InsertVecU256CallbackId(self.imp.on_reducer( "insert_vec_u256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_32_reducer.rs index 0dc299afd0b..8bf2e242f0c 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_32_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_u_32 for super::RemoteReducers { InsertVecU32CallbackId(self.imp.on_reducer( "insert_vec_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_64_reducer.rs index 0fa3cd77e79..c69f4d10598 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_64_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_u_64 for super::RemoteReducers { InsertVecU64CallbackId(self.imp.on_reducer( "insert_vec_u64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_8_reducer.rs index 2b05d92d098..aac4f625159 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_u_8_reducer.rs @@ -60,6 +60,7 @@ impl insert_vec_u_8 for super::RemoteReducers { InsertVecU8CallbackId(self.imp.on_reducer( "insert_vec_u8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_unit_struct_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_unit_struct_reducer.rs index 7d24b66fb3d..4591b1aa42c 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/insert_vec_unit_struct_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/insert_vec_unit_struct_reducer.rs @@ -63,6 +63,7 @@ impl insert_vec_unit_struct for super::RemoteReducers { InsertVecUnitStructCallbackId(self.imp.on_reducer( "insert_vec_unit_struct", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/mod.rs b/sdks/rust/tests/test-client/src/module_bindings/mod.rs index a3fd6ab9c2f..9934c64abc2 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.8.0 (commit 798b1c7909306e832723f507f7a3c97d6abc610d). +// This was generated using spacetimedb cli version 1.9.0 (commit b5f446820a6922d047be45dad717c04afd89bdaf). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; diff --git a/sdks/rust/tests/test-client/src/module_bindings/no_op_succeeds_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/no_op_succeeds_reducer.rs index 4e2fa1d30af..01857f38869 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/no_op_succeeds_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/no_op_succeeds_reducer.rs @@ -58,6 +58,7 @@ impl no_op_succeeds for super::RemoteReducers { NoOpSucceedsCallbackId(self.imp.on_reducer( "no_op_succeeds", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/send_scheduled_message_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/send_scheduled_message_reducer.rs index df46ddf0a78..0eaed8a2a8b 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/send_scheduled_message_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/send_scheduled_message_reducer.rs @@ -63,6 +63,7 @@ impl send_scheduled_message for super::RemoteReducers { SendScheduledMessageCallbackId(self.imp.on_reducer( "send_scheduled_message", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_indexed_simple_enum_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_indexed_simple_enum_reducer.rs index d93d856aba4..deb28f46c55 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_indexed_simple_enum_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_indexed_simple_enum_reducer.rs @@ -64,6 +64,7 @@ impl update_indexed_simple_enum for super::RemoteReducers { UpdateIndexedSimpleEnumCallbackId(self.imp.on_reducer( "update_indexed_simple_enum", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_bool_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_bool_reducer.rs index 6a6571d853e..224c5475edf 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_bool_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_bool_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_bool for super::RemoteReducers { UpdatePkBoolCallbackId(self.imp.on_reducer( "update_pk_bool", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_connection_id_reducer.rs index e6971b4c880..80a2144b604 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_connection_id_reducer.rs @@ -65,6 +65,7 @@ impl update_pk_connection_id for super::RemoteReducers { UpdatePkConnectionIdCallbackId(self.imp.on_reducer( "update_pk_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_128_reducer.rs index f625da5df69..bce97a85a85 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_128_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_i_128 for super::RemoteReducers { UpdatePkI128CallbackId(self.imp.on_reducer( "update_pk_i128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_16_reducer.rs index bab85005a39..d8432619b82 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_16_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_i_16 for super::RemoteReducers { UpdatePkI16CallbackId(self.imp.on_reducer( "update_pk_i16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_256_reducer.rs index b64de53765f..8ba7d78aba7 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_256_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_i_256 for super::RemoteReducers { UpdatePkI256CallbackId(self.imp.on_reducer( "update_pk_i256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_32_reducer.rs index 7b4bb76f669..e0827e16862 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_32_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_i_32 for super::RemoteReducers { UpdatePkI32CallbackId(self.imp.on_reducer( "update_pk_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_64_reducer.rs index 442c29609b8..2e89c4465c6 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_64_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_i_64 for super::RemoteReducers { UpdatePkI64CallbackId(self.imp.on_reducer( "update_pk_i64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_8_reducer.rs index 436d55bba14..2520876b0f4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_i_8_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_i_8 for super::RemoteReducers { UpdatePkI8CallbackId(self.imp.on_reducer( "update_pk_i8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_identity_reducer.rs index 7ff34cd1c97..d7d16de536a 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_identity_reducer.rs @@ -65,6 +65,7 @@ impl update_pk_identity for super::RemoteReducers { UpdatePkIdentityCallbackId(self.imp.on_reducer( "update_pk_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_simple_enum_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_simple_enum_reducer.rs index 80222f53fa0..2d2eb16a15c 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_simple_enum_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_simple_enum_reducer.rs @@ -67,6 +67,7 @@ impl update_pk_simple_enum for super::RemoteReducers { UpdatePkSimpleEnumCallbackId(self.imp.on_reducer( "update_pk_simple_enum", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_string_reducer.rs index 4dfff7fdcb5..c8d49746381 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_string_reducer.rs @@ -65,6 +65,7 @@ impl update_pk_string for super::RemoteReducers { UpdatePkStringCallbackId(self.imp.on_reducer( "update_pk_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_128_reducer.rs index 072f0930f09..02b67b35d96 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_128_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_u_128 for super::RemoteReducers { UpdatePkU128CallbackId(self.imp.on_reducer( "update_pk_u128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_16_reducer.rs index 9aeee62bbd3..99f0defc5ad 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_16_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_u_16 for super::RemoteReducers { UpdatePkU16CallbackId(self.imp.on_reducer( "update_pk_u16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_256_reducer.rs index 44675668f41..13b4303a25b 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_256_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_u_256 for super::RemoteReducers { UpdatePkU256CallbackId(self.imp.on_reducer( "update_pk_u256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_32_reducer.rs index 600bd355ca1..54d2e3f2553 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_32_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_u_32 for super::RemoteReducers { UpdatePkU32CallbackId(self.imp.on_reducer( "update_pk_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_32_two_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_32_two_reducer.rs index 39bdc69317a..0fe5ff6749e 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_32_two_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_32_two_reducer.rs @@ -65,6 +65,7 @@ impl update_pk_u_32_two for super::RemoteReducers { UpdatePkU32TwoCallbackId(self.imp.on_reducer( "update_pk_u32_two", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_64_reducer.rs index 5c78ef0dee2..49bd7be82e8 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_64_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_u_64 for super::RemoteReducers { UpdatePkU64CallbackId(self.imp.on_reducer( "update_pk_u64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_8_reducer.rs index 8b3dde5c0df..163200bfec4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_pk_u_8_reducer.rs @@ -64,6 +64,7 @@ impl update_pk_u_8 for super::RemoteReducers { UpdatePkU8CallbackId(self.imp.on_reducer( "update_pk_u8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_bool_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_bool_reducer.rs index 39a46e568d1..049708790bc 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_bool_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_bool_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_bool for super::RemoteReducers { UpdateUniqueBoolCallbackId(self.imp.on_reducer( "update_unique_bool", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_connection_id_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_connection_id_reducer.rs index 4d30bcde78d..1ee089606bd 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_connection_id_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_connection_id_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_connection_id for super::RemoteReducers { UpdateUniqueConnectionIdCallbackId(self.imp.on_reducer( "update_unique_connection_id", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_128_reducer.rs index 43a7f83ae4f..a8d7371bb18 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_128_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_i_128 for super::RemoteReducers { UpdateUniqueI128CallbackId(self.imp.on_reducer( "update_unique_i128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_16_reducer.rs index 265314abbfe..cf838f40e2f 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_16_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_i_16 for super::RemoteReducers { UpdateUniqueI16CallbackId(self.imp.on_reducer( "update_unique_i16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_256_reducer.rs index d6a71d9cc4a..0d145100602 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_256_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_i_256 for super::RemoteReducers { UpdateUniqueI256CallbackId(self.imp.on_reducer( "update_unique_i256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_32_reducer.rs index d45c622cdd8..4b6134e44f7 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_32_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_i_32 for super::RemoteReducers { UpdateUniqueI32CallbackId(self.imp.on_reducer( "update_unique_i32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_64_reducer.rs index 94935572ca6..af06718514c 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_64_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_i_64 for super::RemoteReducers { UpdateUniqueI64CallbackId(self.imp.on_reducer( "update_unique_i64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_8_reducer.rs index 7b11b4a5ddf..e0659b5bbe4 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_i_8_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_i_8 for super::RemoteReducers { UpdateUniqueI8CallbackId(self.imp.on_reducer( "update_unique_i8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_identity_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_identity_reducer.rs index 910656a249c..2e5aca67468 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_identity_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_identity_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_identity for super::RemoteReducers { UpdateUniqueIdentityCallbackId(self.imp.on_reducer( "update_unique_identity", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_string_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_string_reducer.rs index 7c19bcf1e15..f6f3993de39 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_string_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_string_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_string for super::RemoteReducers { UpdateUniqueStringCallbackId(self.imp.on_reducer( "update_unique_string", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_128_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_128_reducer.rs index 8b8dc92c2bf..01c694bc4ee 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_128_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_128_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_u_128 for super::RemoteReducers { UpdateUniqueU128CallbackId(self.imp.on_reducer( "update_unique_u128", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_16_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_16_reducer.rs index bb445a34b90..85e53ceb039 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_16_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_16_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_u_16 for super::RemoteReducers { UpdateUniqueU16CallbackId(self.imp.on_reducer( "update_unique_u16", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_256_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_256_reducer.rs index 0a1e401fe71..f4c019ddc10 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_256_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_256_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_u_256 for super::RemoteReducers { UpdateUniqueU256CallbackId(self.imp.on_reducer( "update_unique_u256", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_32_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_32_reducer.rs index c9f83b22998..91dea042486 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_32_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_32_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_u_32 for super::RemoteReducers { UpdateUniqueU32CallbackId(self.imp.on_reducer( "update_unique_u32", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_64_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_64_reducer.rs index 87e80d6396d..8d2921fc4fb 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_64_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_64_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_u_64 for super::RemoteReducers { UpdateUniqueU64CallbackId(self.imp.on_reducer( "update_unique_u64", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_8_reducer.rs b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_8_reducer.rs index 7403c3c9ba6..5aff9edfa98 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_8_reducer.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/update_unique_u_8_reducer.rs @@ -65,6 +65,7 @@ impl update_unique_u_8 for super::RemoteReducers { UpdateUniqueU8CallbackId(self.imp.on_reducer( "update_unique_u8", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { From d19fd5fcf38844be6b1470e557a04c97f6c0304b Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Tue, 25 Nov 2025 12:24:05 +0100 Subject: [PATCH 08/12] scheduling fix test module for ts --- modules/sdk-test-procedure-ts/src/index.ts | 52 +++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/modules/sdk-test-procedure-ts/src/index.ts b/modules/sdk-test-procedure-ts/src/index.ts index 38b3ec17f11..c4e09fbd61f 100644 --- a/modules/sdk-test-procedure-ts/src/index.ts +++ b/modules/sdk-test-procedure-ts/src/index.ts @@ -3,6 +3,7 @@ // ───────────────────────────────────────────────────────────────────────────── import { errors, + ScheduleAt, schema, t, table, @@ -25,7 +26,30 @@ const MyTable = table( { field: ReturnStruct } ); -const spacetimedb = schema(MyTable); +const ScheduledProcTable = t.row({ + scheduled_id: t.u64().primaryKey().autoInc(), + scheduled_at: t.scheduleAt(), + reducer_ts: t.timestamp(), + x: t.u8(), + y: t.u8(), +}); +const ScheduledProcTableTable = table( + { name: 'scheduled_proc_table', scheduled: 'scheduled_proc' }, + ScheduledProcTable +); + +const ProcInsertsInto = t.row({ + reducer_ts: t.timestamp(), + procedure_ts: t.timestamp(), + x: t.u8(), + y: t.u8(), +}); +const ProcInsertsIntoTable = table( + { name: 'proc_inserts_into', public: true }, + ProcInsertsInto +); + +const spacetimedb = schema(MyTable, ScheduledProcTableTable, ProcInsertsIntoTable); spacetimedb.procedure( 'return_primitive', @@ -119,3 +143,29 @@ spacetimedb.procedure('insert_with_tx_rollback', t.unit(), ctx => { assertRowCount(ctx, 0); return {}; }); + +spacetimedb.reducer('schedule_proc', {}, ctx => { + ctx.db.scheduled_proc_table.insert({ + scheduled_id: 0n, + scheduled_at: ScheduleAt.interval(1000000n), + reducer_ts: ctx.timestamp, + x: 42, + y: 24, + }) +}); + +spacetimedb.procedure('scheduled_proc', { data: ScheduledProcTable }, t.unit(), (ctx, { data }) => { + const reducer_ts = data.reducer_ts; + const x = data.x; + const y = data.y; + const procedure_ts = ctx.timestamp; + ctx.withTx(ctx => { + ctx.db.proc_inserts_into.insert({ + reducer_ts, + procedure_ts, + x, + y + }); + }); + return {}; +}); From 33ebb61cb8db7d452a5ff7cb748f334166bd0146 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Tue, 25 Nov 2025 19:14:52 +0100 Subject: [PATCH 09/12] import type ns ScheduleAt --- modules/sdk-test-procedure-ts/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sdk-test-procedure-ts/src/index.ts b/modules/sdk-test-procedure-ts/src/index.ts index c4e09fbd61f..ad90893d401 100644 --- a/modules/sdk-test-procedure-ts/src/index.ts +++ b/modules/sdk-test-procedure-ts/src/index.ts @@ -3,11 +3,11 @@ // ───────────────────────────────────────────────────────────────────────────── import { errors, - ScheduleAt, schema, t, table, type ProcedureCtx, + type ScheduleAt, type TransactionCtx, } from 'spacetimedb/server'; From a722cabfdf0a59d6fd152cf316511a514475c0ca Mon Sep 17 00:00:00 2001 From: Noa Date: Tue, 25 Nov 2025 12:45:59 -0600 Subject: [PATCH 10/12] Fix procedure types --- crates/bindings-typescript/src/lib/procedures.ts | 5 +++-- modules/sdk-test-procedure-ts/src/index.ts | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/bindings-typescript/src/lib/procedures.ts b/crates/bindings-typescript/src/lib/procedures.ts index ed0d797f1ca..2489e24beb8 100644 --- a/crates/bindings-typescript/src/lib/procedures.ts +++ b/crates/bindings-typescript/src/lib/procedures.ts @@ -39,8 +39,9 @@ export function procedure< const paramsType: ProductType = { elements: Object.entries(params).map(([n, c]) => ({ name: n, - algebraicType: - 'typeBuilder' in c ? c.typeBuilder.algebraicType : c.algebraicType, + algebraicType: registerTypesRecursively( + 'typeBuilder' in c ? c.typeBuilder : c + ).algebraicType, })), }; const returnType = registerTypesRecursively(ret).algebraicType; diff --git a/modules/sdk-test-procedure-ts/src/index.ts b/modules/sdk-test-procedure-ts/src/index.ts index ad90893d401..0e090fd7d02 100644 --- a/modules/sdk-test-procedure-ts/src/index.ts +++ b/modules/sdk-test-procedure-ts/src/index.ts @@ -1,13 +1,13 @@ // ───────────────────────────────────────────────────────────────────────────── // IMPORTS // ───────────────────────────────────────────────────────────────────────────── +import { ScheduleAt } from 'spacetimedb'; import { errors, schema, t, table, type ProcedureCtx, - type ScheduleAt, type TransactionCtx, } from 'spacetimedb/server'; @@ -145,7 +145,7 @@ spacetimedb.procedure('insert_with_tx_rollback', t.unit(), ctx => { }); spacetimedb.reducer('schedule_proc', {}, ctx => { - ctx.db.scheduled_proc_table.insert({ + ctx.db.scheduledProcTable.insert({ scheduled_id: 0n, scheduled_at: ScheduleAt.interval(1000000n), reducer_ts: ctx.timestamp, @@ -160,7 +160,7 @@ spacetimedb.procedure('scheduled_proc', { data: ScheduledProcTable }, t.unit(), const y = data.y; const procedure_ts = ctx.timestamp; ctx.withTx(ctx => { - ctx.db.proc_inserts_into.insert({ + ctx.db.procInsertsInto.insert({ reducer_ts, procedure_ts, x, From e7814ad13077858dc1011818fc6a4327492045a8 Mon Sep 17 00:00:00 2001 From: rekhoff Date: Tue, 25 Nov 2025 14:10:48 -0800 Subject: [PATCH 11/12] Regenerated bindings for C# regression tests --- .../module_bindings/SpacetimeDBClient.g.cs | 2 +- .../Procedures/ScheduledProc.g.cs | 77 +++++++++++++++++++ .../Reducers/ScheduleProc.g.cs | 59 ++++++++++++++ .../module_bindings/SpacetimeDBClient.g.cs | 6 +- .../Tables/ProcInsertsInto.g.cs | 27 +++++++ .../Tables/ScheduledProcTable.g.cs | 39 ++++++++++ .../Types/ProcInsertsInto.g.cs | 42 ++++++++++ .../Types/ScheduledProcTable.g.cs | 47 +++++++++++ .../module_bindings/SpacetimeDBClient.g.cs | 2 +- 9 files changed, 298 insertions(+), 3 deletions(-) create mode 100644 sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Procedures/ScheduledProc.g.cs create mode 100644 sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Reducers/ScheduleProc.g.cs create mode 100644 sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Tables/ProcInsertsInto.g.cs create mode 100644 sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Tables/ScheduledProcTable.g.cs create mode 100644 sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Types/ProcInsertsInto.g.cs create mode 100644 sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Types/ScheduledProcTable.g.cs diff --git a/sdks/csharp/examples~/regression-tests/client/module_bindings/SpacetimeDBClient.g.cs b/sdks/csharp/examples~/regression-tests/client/module_bindings/SpacetimeDBClient.g.cs index f69d9fae6d1..1ad841be420 100644 --- a/sdks/csharp/examples~/regression-tests/client/module_bindings/SpacetimeDBClient.g.cs +++ b/sdks/csharp/examples~/regression-tests/client/module_bindings/SpacetimeDBClient.g.cs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.8.0 (commit 6cbedef7ca453ea48801d9192779fcee7a465a10). +// This was generated using spacetimedb cli version 1.9.0 (commit a722cabfdf0a59d6fd152cf316511a514475c0ca). #nullable enable diff --git a/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Procedures/ScheduledProc.g.cs b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Procedures/ScheduledProc.g.cs new file mode 100644 index 00000000000..4d99bfe501c --- /dev/null +++ b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Procedures/ScheduledProc.g.cs @@ -0,0 +1,77 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using SpacetimeDB.ClientApi; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + public sealed partial class RemoteProcedures : RemoteBase + { + public void ScheduledProc(SpacetimeDB.Types.ScheduledProcTable data, ProcedureCallback callback) + { + // Convert the clean callback to the wrapper callback + InternalScheduledProc(data, (ctx, result) => + { + if (result.IsSuccess && result.Value != null) + { + callback(ctx, ProcedureCallbackResult.Success(result.Value.Value)); + } + else + { + callback(ctx, ProcedureCallbackResult.Failure(result.Error!)); + } + }); + } + + private void InternalScheduledProc(SpacetimeDB.Types.ScheduledProcTable data, ProcedureCallback callback) + { + conn.InternalCallProcedure(new Procedure.ScheduledProcArgs(data), callback); + } + + } + + public abstract partial class Procedure + { + [SpacetimeDB.Type] + [DataContract] + public sealed partial class ScheduledProc + { + [DataMember(Name = "Value")] + public SpacetimeDB.Unit Value; + + public ScheduledProc(SpacetimeDB.Unit Value) + { + this.Value = Value; + } + + public ScheduledProc() + { + } + } + [SpacetimeDB.Type] + [DataContract] + public sealed partial class ScheduledProcArgs : Procedure, IProcedureArgs + { + [DataMember(Name = "data")] + public ScheduledProcTable Data; + + public ScheduledProcArgs(ScheduledProcTable Data) + { + this.Data = Data; + } + + public ScheduledProcArgs() + { + this.Data = new(); + } + + string IProcedureArgs.ProcedureName => "scheduled_proc"; + } + + } +} diff --git a/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Reducers/ScheduleProc.g.cs b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Reducers/ScheduleProc.g.cs new file mode 100644 index 00000000000..734d28c0d47 --- /dev/null +++ b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Reducers/ScheduleProc.g.cs @@ -0,0 +1,59 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using SpacetimeDB.ClientApi; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + public sealed partial class RemoteReducers : RemoteBase + { + public delegate void ScheduleProcHandler(ReducerEventContext ctx); + public event ScheduleProcHandler? OnScheduleProc; + + public void ScheduleProc() + { + conn.InternalCallReducer(new Reducer.ScheduleProc(), this.SetCallReducerFlags.ScheduleProcFlags); + } + + public bool InvokeScheduleProc(ReducerEventContext ctx, Reducer.ScheduleProc args) + { + if (OnScheduleProc == null) + { + if (InternalOnUnhandledReducerError != null) + { + switch (ctx.Event.Status) + { + case Status.Failed(var reason): InternalOnUnhandledReducerError(ctx, new Exception(reason)); break; + case Status.OutOfEnergy(var _): InternalOnUnhandledReducerError(ctx, new Exception("out of energy")); break; + } + } + return false; + } + OnScheduleProc( + ctx + ); + return true; + } + } + + public abstract partial class Reducer + { + [SpacetimeDB.Type] + [DataContract] + public sealed partial class ScheduleProc : Reducer, IReducerArgs + { + string IReducerArgs.ReducerName => "schedule_proc"; + } + } + + public sealed partial class SetReducerFlags + { + internal CallReducerFlags ScheduleProcFlags; + public void ScheduleProc(CallReducerFlags flags) => ScheduleProcFlags = flags; + } +} diff --git a/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/SpacetimeDBClient.g.cs b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/SpacetimeDBClient.g.cs index 5d5e5bdc4f6..5ab798a5bca 100644 --- a/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/SpacetimeDBClient.g.cs +++ b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/SpacetimeDBClient.g.cs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.8.0 (commit 6cbedef7ca453ea48801d9192779fcee7a465a10). +// This was generated using spacetimedb cli version 1.9.0 (commit a722cabfdf0a59d6fd152cf316511a514475c0ca). #nullable enable @@ -29,6 +29,8 @@ public sealed partial class RemoteTables : RemoteTablesBase public RemoteTables(DbConnection conn) { AddTable(MyTable = new(conn)); + AddTable(ProcInsertsInto = new(conn)); + AddTable(ScheduledProcTable = new(conn)); } } @@ -589,6 +591,7 @@ protected override Reducer ToReducer(TransactionUpdate update) var encodedArgs = update.ReducerCall.Args; return update.ReducerCall.ReducerName switch { + "schedule_proc" => BSATNHelpers.Decode(encodedArgs), "" => throw new SpacetimeDBEmptyReducerNameException("Reducer name is empty"), var reducer => throw new ArgumentOutOfRangeException("Reducer", $"Unknown reducer {reducer}") }; @@ -614,6 +617,7 @@ protected override bool Dispatch(IReducerEventContext context, Reducer reducer) var eventContext = (ReducerEventContext)context; return reducer switch { + Reducer.ScheduleProc args => Reducers.InvokeScheduleProc(eventContext, args), _ => throw new ArgumentOutOfRangeException("Reducer", $"Unknown reducer {reducer}") }; } diff --git a/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Tables/ProcInsertsInto.g.cs b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Tables/ProcInsertsInto.g.cs new file mode 100644 index 00000000000..f37c1a31822 --- /dev/null +++ b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Tables/ProcInsertsInto.g.cs @@ -0,0 +1,27 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using SpacetimeDB.BSATN; +using SpacetimeDB.ClientApi; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + public sealed partial class RemoteTables + { + public sealed class ProcInsertsIntoHandle : RemoteTableHandle + { + protected override string RemoteTableName => "proc_inserts_into"; + + internal ProcInsertsIntoHandle(DbConnection conn) : base(conn) + { + } + } + + public readonly ProcInsertsIntoHandle ProcInsertsInto; + } +} diff --git a/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Tables/ScheduledProcTable.g.cs b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Tables/ScheduledProcTable.g.cs new file mode 100644 index 00000000000..2d57c643f1c --- /dev/null +++ b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Tables/ScheduledProcTable.g.cs @@ -0,0 +1,39 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using SpacetimeDB.BSATN; +using SpacetimeDB.ClientApi; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + public sealed partial class RemoteTables + { + public sealed class ScheduledProcTableHandle : RemoteTableHandle + { + protected override string RemoteTableName => "scheduled_proc_table"; + + public sealed class ScheduledIdUniqueIndex : UniqueIndexBase + { + protected override ulong GetKey(ScheduledProcTable row) => row.ScheduledId; + + public ScheduledIdUniqueIndex(ScheduledProcTableHandle table) : base(table) { } + } + + public readonly ScheduledIdUniqueIndex ScheduledId; + + internal ScheduledProcTableHandle(DbConnection conn) : base(conn) + { + ScheduledId = new(this); + } + + protected override object GetPrimaryKey(ScheduledProcTable row) => row.ScheduledId; + } + + public readonly ScheduledProcTableHandle ScheduledProcTable; + } +} diff --git a/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Types/ProcInsertsInto.g.cs b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Types/ProcInsertsInto.g.cs new file mode 100644 index 00000000000..45660db070c --- /dev/null +++ b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Types/ProcInsertsInto.g.cs @@ -0,0 +1,42 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + [SpacetimeDB.Type] + [DataContract] + public sealed partial class ProcInsertsInto + { + [DataMember(Name = "reducer_ts")] + public SpacetimeDB.Timestamp ReducerTs; + [DataMember(Name = "procedure_ts")] + public SpacetimeDB.Timestamp ProcedureTs; + [DataMember(Name = "x")] + public byte X; + [DataMember(Name = "y")] + public byte Y; + + public ProcInsertsInto( + SpacetimeDB.Timestamp ReducerTs, + SpacetimeDB.Timestamp ProcedureTs, + byte X, + byte Y + ) + { + this.ReducerTs = ReducerTs; + this.ProcedureTs = ProcedureTs; + this.X = X; + this.Y = Y; + } + + public ProcInsertsInto() + { + } + } +} diff --git a/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Types/ScheduledProcTable.g.cs b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Types/ScheduledProcTable.g.cs new file mode 100644 index 00000000000..27b54bdb859 --- /dev/null +++ b/sdks/csharp/examples~/regression-tests/procedure-client/module_bindings/Types/ScheduledProcTable.g.cs @@ -0,0 +1,47 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + [SpacetimeDB.Type] + [DataContract] + public sealed partial class ScheduledProcTable + { + [DataMember(Name = "scheduled_id")] + public ulong ScheduledId; + [DataMember(Name = "scheduled_at")] + public SpacetimeDB.ScheduleAt ScheduledAt; + [DataMember(Name = "reducer_ts")] + public SpacetimeDB.Timestamp ReducerTs; + [DataMember(Name = "x")] + public byte X; + [DataMember(Name = "y")] + public byte Y; + + public ScheduledProcTable( + ulong ScheduledId, + SpacetimeDB.ScheduleAt ScheduledAt, + SpacetimeDB.Timestamp ReducerTs, + byte X, + byte Y + ) + { + this.ScheduledId = ScheduledId; + this.ScheduledAt = ScheduledAt; + this.ReducerTs = ReducerTs; + this.X = X; + this.Y = Y; + } + + public ScheduledProcTable() + { + this.ScheduledAt = null!; + } + } +} diff --git a/sdks/csharp/examples~/regression-tests/republishing/client/module_bindings/SpacetimeDBClient.g.cs b/sdks/csharp/examples~/regression-tests/republishing/client/module_bindings/SpacetimeDBClient.g.cs index c71949a0cc0..adb0e51c5b8 100644 --- a/sdks/csharp/examples~/regression-tests/republishing/client/module_bindings/SpacetimeDBClient.g.cs +++ b/sdks/csharp/examples~/regression-tests/republishing/client/module_bindings/SpacetimeDBClient.g.cs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.8.0 (commit 6cbedef7ca453ea48801d9192779fcee7a465a10). +// This was generated using spacetimedb cli version 1.9.0 (commit a722cabfdf0a59d6fd152cf316511a514475c0ca). #nullable enable From 6935a4a354d3f31abd7d0b9e0bda3f9fdc211f93 Mon Sep 17 00:00:00 2001 From: Phoebe Goldman Date: Tue, 25 Nov 2025 17:29:01 -0500 Subject: [PATCH 12/12] Update view_client bindings --- .../tests/connect_disconnect_client/src/module_bindings/mod.rs | 2 +- sdks/rust/tests/procedure-client/src/module_bindings/mod.rs | 2 +- sdks/rust/tests/test-client/src/module_bindings/mod.rs | 2 +- .../view-client/src/module_bindings/delete_player_reducer.rs | 1 + .../view-client/src/module_bindings/insert_player_reducer.rs | 1 + sdks/rust/tests/view-client/src/module_bindings/mod.rs | 2 +- 6 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sdks/rust/tests/connect_disconnect_client/src/module_bindings/mod.rs b/sdks/rust/tests/connect_disconnect_client/src/module_bindings/mod.rs index dbeaf3f6881..b412047c218 100644 --- a/sdks/rust/tests/connect_disconnect_client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/connect_disconnect_client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.9.0 (commit b5f446820a6922d047be45dad717c04afd89bdaf). +// This was generated using spacetimedb cli version 1.9.0 (commit d694065b403f116daeb90e7cccc0920ce23dfc71). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; diff --git a/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs b/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs index cad15b36b13..9fe87a60fa7 100644 --- a/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/procedure-client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.9.0 (commit b5f446820a6922d047be45dad717c04afd89bdaf). +// This was generated using spacetimedb cli version 1.9.0 (commit d694065b403f116daeb90e7cccc0920ce23dfc71). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; diff --git a/sdks/rust/tests/test-client/src/module_bindings/mod.rs b/sdks/rust/tests/test-client/src/module_bindings/mod.rs index 9934c64abc2..9fc08bf5823 100644 --- a/sdks/rust/tests/test-client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/test-client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.9.0 (commit b5f446820a6922d047be45dad717c04afd89bdaf). +// This was generated using spacetimedb cli version 1.9.0 (commit d694065b403f116daeb90e7cccc0920ce23dfc71). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; diff --git a/sdks/rust/tests/view-client/src/module_bindings/delete_player_reducer.rs b/sdks/rust/tests/view-client/src/module_bindings/delete_player_reducer.rs index d05e4bde0b8..272c3835916 100644 --- a/sdks/rust/tests/view-client/src/module_bindings/delete_player_reducer.rs +++ b/sdks/rust/tests/view-client/src/module_bindings/delete_player_reducer.rs @@ -62,6 +62,7 @@ impl delete_player for super::RemoteReducers { DeletePlayerCallbackId(self.imp.on_reducer( "delete_player", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/view-client/src/module_bindings/insert_player_reducer.rs b/sdks/rust/tests/view-client/src/module_bindings/insert_player_reducer.rs index 42c37d4ebbd..42e547ac931 100644 --- a/sdks/rust/tests/view-client/src/module_bindings/insert_player_reducer.rs +++ b/sdks/rust/tests/view-client/src/module_bindings/insert_player_reducer.rs @@ -65,6 +65,7 @@ impl insert_player for super::RemoteReducers { InsertPlayerCallbackId(self.imp.on_reducer( "insert_player", Box::new(move |ctx: &super::ReducerEventContext| { + #[allow(irrefutable_let_patterns)] let super::ReducerEventContext { event: __sdk::ReducerEvent { diff --git a/sdks/rust/tests/view-client/src/module_bindings/mod.rs b/sdks/rust/tests/view-client/src/module_bindings/mod.rs index 012702e25f9..777214e42b4 100644 --- a/sdks/rust/tests/view-client/src/module_bindings/mod.rs +++ b/sdks/rust/tests/view-client/src/module_bindings/mod.rs @@ -1,7 +1,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE // WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. -// This was generated using spacetimedb cli version 1.9.0 (commit 71b592fb451375323e879b842268764e23417664). +// This was generated using spacetimedb cli version 1.9.0 (commit d694065b403f116daeb90e7cccc0920ce23dfc71). #![allow(unused, clippy::all)] use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};