2026-02-06 23:51:08 -08:00
// 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.11.3 (commit 02449737ca3b29e7e39679fccbef541a50f32094).
#![ allow(unused, clippy::all) ]
use spacetimedb_sdk ::__codegen ::{ self as __sdk , __lib , __sats , __ws } ;
2026-02-08 00:10:10 -08:00
pub mod add_bot_reducer ;
pub mod bot_table ;
pub mod bot_type ;
2026-02-15 07:09:19 -08:00
pub mod clear_all_reducer ;
2026-02-12 17:06:28 -08:00
pub mod db_tile_type ;
pub mod db_wall_type ;
2026-02-13 07:49:09 -08:00
pub mod discard_tile_reducer ;
2026-02-07 17:46:03 -08:00
pub mod dragon_type ;
2026-02-13 06:10:09 -08:00
pub mod draw_tile_reducer ;
2026-02-08 18:15:09 -08:00
pub mod game_state_type ;
2026-02-07 22:45:43 -08:00
pub mod join_or_create_lobby_reducer ;
pub mod lobby_table ;
pub mod lobby_type ;
2026-02-08 00:10:10 -08:00
pub mod login_or_add_player_reducer ;
2026-02-08 23:47:57 -08:00
pub mod player_or_bot_type ;
2026-02-07 17:46:03 -08:00
pub mod player_table ;
pub mod player_type ;
pub mod rank_type ;
2026-02-10 19:38:41 -08:00
pub mod set_ready_reducer ;
2026-02-08 23:47:57 -08:00
pub mod shuffle_deal_reducer ;
2026-02-13 08:16:41 -08:00
pub mod skip_call_reducer ;
2026-02-10 19:38:41 -08:00
pub mod start_game_reducer ;
2026-02-07 17:46:03 -08:00
pub mod suit_type ;
2026-02-12 17:06:28 -08:00
pub mod tile_table ;
2026-02-07 17:46:03 -08:00
pub mod tile_type ;
2026-02-10 01:40:13 -08:00
pub mod turn_state_type ;
2026-02-07 17:46:03 -08:00
pub mod wall_table ;
pub mod wind_type ;
2026-02-08 00:10:10 -08:00
pub use add_bot_reducer ::{ add_bot , set_flags_for_add_bot , AddBotCallbackId } ;
pub use bot_table ::* ;
pub use bot_type ::Bot ;
2026-02-15 07:09:19 -08:00
pub use clear_all_reducer ::{ clear_all , set_flags_for_clear_all , ClearAllCallbackId } ;
2026-02-12 17:06:28 -08:00
pub use db_tile_type ::DbTile ;
pub use db_wall_type ::DbWall ;
2026-02-13 07:49:09 -08:00
pub use discard_tile_reducer ::{ discard_tile , set_flags_for_discard_tile , DiscardTileCallbackId } ;
2026-02-07 17:46:03 -08:00
pub use dragon_type ::Dragon ;
2026-02-13 06:10:09 -08:00
pub use draw_tile_reducer ::{ draw_tile , set_flags_for_draw_tile , DrawTileCallbackId } ;
2026-02-08 18:15:09 -08:00
pub use game_state_type ::GameState ;
2026-02-07 22:45:43 -08:00
pub use join_or_create_lobby_reducer ::{
join_or_create_lobby , set_flags_for_join_or_create_lobby , JoinOrCreateLobbyCallbackId ,
} ;
pub use lobby_table ::* ;
pub use lobby_type ::Lobby ;
2026-02-08 00:10:10 -08:00
pub use login_or_add_player_reducer ::{
login_or_add_player , set_flags_for_login_or_add_player , LoginOrAddPlayerCallbackId ,
} ;
2026-02-08 23:47:57 -08:00
pub use player_or_bot_type ::PlayerOrBot ;
2026-02-07 17:46:03 -08:00
pub use player_table ::* ;
pub use player_type ::Player ;
pub use rank_type ::Rank ;
2026-02-10 19:38:41 -08:00
pub use set_ready_reducer ::{ set_flags_for_set_ready , set_ready , SetReadyCallbackId } ;
2026-02-08 23:47:57 -08:00
pub use shuffle_deal_reducer ::{ set_flags_for_shuffle_deal , shuffle_deal , ShuffleDealCallbackId } ;
2026-02-13 08:16:41 -08:00
pub use skip_call_reducer ::{ set_flags_for_skip_call , skip_call , SkipCallCallbackId } ;
2026-02-10 19:38:41 -08:00
pub use start_game_reducer ::{ set_flags_for_start_game , start_game , StartGameCallbackId } ;
2026-02-07 17:46:03 -08:00
pub use suit_type ::Suit ;
2026-02-12 17:06:28 -08:00
pub use tile_table ::* ;
2026-02-07 17:46:03 -08:00
pub use tile_type ::Tile ;
2026-02-10 01:40:13 -08:00
pub use turn_state_type ::TurnState ;
2026-02-07 17:46:03 -08:00
pub use wall_table ::* ;
pub use wind_type ::Wind ;
2026-02-06 23:51:08 -08:00
#[ derive(Clone, PartialEq, Debug) ]
/// One of the reducers defined by this module.
///
/// Contained within a [`__sdk::ReducerEvent`] in [`EventContext`]s for reducer events
/// to indicate which reducer caused the event.
pub enum Reducer {
2026-02-08 00:10:10 -08:00
AddBot { lobby_id : u32 } ,
2026-02-15 07:09:19 -08:00
ClearAll ,
2026-02-13 07:49:09 -08:00
DiscardTile { tile_id : u32 } ,
2026-02-13 06:10:09 -08:00
DrawTile ,
2026-02-08 20:21:23 -08:00
JoinOrCreateLobby { lobby_id : u32 } ,
2026-02-08 00:10:10 -08:00
LoginOrAddPlayer ,
2026-02-10 19:38:41 -08:00
SetReady { ready : bool } ,
2026-02-08 23:47:57 -08:00
ShuffleDeal { lobby_id : u32 } ,
2026-02-13 08:16:41 -08:00
SkipCall ,
2026-02-10 19:38:41 -08:00
StartGame ,
2026-02-06 23:51:08 -08:00
}
impl __sdk ::InModule for Reducer {
type Module = RemoteModule ;
}
impl __sdk ::Reducer for Reducer {
fn reducer_name ( & self ) -> & 'static str {
match self {
2026-02-08 00:10:10 -08:00
Reducer ::AddBot { .. } = > " add_bot " ,
2026-02-15 07:09:19 -08:00
Reducer ::ClearAll = > " clear_all " ,
2026-02-13 07:49:09 -08:00
Reducer ::DiscardTile { .. } = > " discard_tile " ,
2026-02-13 06:10:09 -08:00
Reducer ::DrawTile = > " draw_tile " ,
2026-02-07 22:45:43 -08:00
Reducer ::JoinOrCreateLobby { .. } = > " join_or_create_lobby " ,
2026-02-08 00:10:10 -08:00
Reducer ::LoginOrAddPlayer = > " login_or_add_player " ,
2026-02-10 19:38:41 -08:00
Reducer ::SetReady { .. } = > " set_ready " ,
2026-02-08 23:47:57 -08:00
Reducer ::ShuffleDeal { .. } = > " shuffle_deal " ,
2026-02-13 08:16:41 -08:00
Reducer ::SkipCall = > " skip_call " ,
2026-02-10 19:38:41 -08:00
Reducer ::StartGame = > " start_game " ,
2026-02-06 23:51:08 -08:00
_ = > unreachable! ( ) ,
}
}
}
impl TryFrom < __ws ::ReducerCallInfo < __ws ::BsatnFormat > > for Reducer {
type Error = __sdk ::Error ;
fn try_from ( value : __ws ::ReducerCallInfo < __ws ::BsatnFormat > ) -> __sdk ::Result < Self > {
match & value . reducer_name [ .. ] {
2026-02-08 00:10:10 -08:00
" add_bot " = > Ok ( __sdk ::parse_reducer_args ::< add_bot_reducer ::AddBotArgs > (
" add_bot " ,
& value . args ,
) ?
. into ( ) ) ,
2026-02-15 07:09:19 -08:00
" clear_all " = > Ok (
__sdk ::parse_reducer_args ::< clear_all_reducer ::ClearAllArgs > (
" clear_all " ,
& value . args ,
) ?
. into ( ) ,
) ,
2026-02-13 07:49:09 -08:00
" discard_tile " = > Ok (
__sdk ::parse_reducer_args ::< discard_tile_reducer ::DiscardTileArgs > (
" discard_tile " ,
& value . args ,
) ?
. into ( ) ,
) ,
2026-02-13 06:10:09 -08:00
" draw_tile " = > Ok (
__sdk ::parse_reducer_args ::< draw_tile_reducer ::DrawTileArgs > (
" draw_tile " ,
& value . args ,
) ?
. into ( ) ,
) ,
2026-02-07 22:45:43 -08:00
" join_or_create_lobby " = > Ok ( __sdk ::parse_reducer_args ::<
join_or_create_lobby_reducer ::JoinOrCreateLobbyArgs ,
> ( " join_or_create_lobby " , & value . args ) ?
. into ( ) ) ,
2026-02-08 00:10:10 -08:00
" login_or_add_player " = > Ok ( __sdk ::parse_reducer_args ::<
login_or_add_player_reducer ::LoginOrAddPlayerArgs ,
> ( " login_or_add_player " , & value . args ) ?
2026-02-06 23:51:08 -08:00
. into ( ) ) ,
2026-02-10 19:38:41 -08:00
" set_ready " = > Ok (
__sdk ::parse_reducer_args ::< set_ready_reducer ::SetReadyArgs > (
" set_ready " ,
& value . args ,
) ?
. into ( ) ,
) ,
2026-02-08 23:47:57 -08:00
" shuffle_deal " = > Ok (
__sdk ::parse_reducer_args ::< shuffle_deal_reducer ::ShuffleDealArgs > (
" shuffle_deal " ,
2026-02-06 23:51:08 -08:00
& value . args ,
) ?
. into ( ) ,
) ,
2026-02-13 08:16:41 -08:00
" skip_call " = > Ok (
__sdk ::parse_reducer_args ::< skip_call_reducer ::SkipCallArgs > (
" skip_call " ,
& value . args ,
) ?
. into ( ) ,
) ,
2026-02-10 19:38:41 -08:00
" start_game " = > Ok (
__sdk ::parse_reducer_args ::< start_game_reducer ::StartGameArgs > (
" start_game " ,
& value . args ,
) ?
. into ( ) ,
) ,
2026-02-06 23:51:08 -08:00
unknown = > {
Err (
__sdk ::InternalError ::unknown_name ( " reducer " , unknown , " ReducerCallInfo " )
. into ( ) ,
)
}
}
}
}
#[ derive(Default) ]
#[ allow(non_snake_case) ]
#[ doc(hidden) ]
pub struct DbUpdate {
2026-02-08 00:10:10 -08:00
bot : __sdk ::TableUpdate < Bot > ,
2026-02-07 22:45:43 -08:00
lobby : __sdk ::TableUpdate < Lobby > ,
2026-02-07 17:46:03 -08:00
player : __sdk ::TableUpdate < Player > ,
2026-02-12 17:06:28 -08:00
tile : __sdk ::TableUpdate < DbTile > ,
wall : __sdk ::TableUpdate < DbWall > ,
2026-02-06 23:51:08 -08:00
}
impl TryFrom < __ws ::DatabaseUpdate < __ws ::BsatnFormat > > for DbUpdate {
type Error = __sdk ::Error ;
fn try_from ( raw : __ws ::DatabaseUpdate < __ws ::BsatnFormat > ) -> Result < Self , Self ::Error > {
let mut db_update = DbUpdate ::default ( ) ;
for table_update in raw . tables {
match & table_update . table_name [ .. ] {
2026-02-08 00:10:10 -08:00
" bot " = > db_update
. bot
. append ( bot_table ::parse_table_update ( table_update ) ? ) ,
2026-02-07 22:45:43 -08:00
" lobby " = > db_update
. lobby
. append ( lobby_table ::parse_table_update ( table_update ) ? ) ,
2026-02-07 17:46:03 -08:00
" player " = > db_update
. player
. append ( player_table ::parse_table_update ( table_update ) ? ) ,
2026-02-12 17:06:28 -08:00
" tile " = > db_update
. tile
. append ( tile_table ::parse_table_update ( table_update ) ? ) ,
2026-02-07 17:46:03 -08:00
" wall " = > db_update
. wall
. append ( wall_table ::parse_table_update ( table_update ) ? ) ,
2026-02-06 23:51:08 -08:00
unknown = > {
return Err ( __sdk ::InternalError ::unknown_name (
" table " ,
unknown ,
" DatabaseUpdate " ,
)
. into ( ) ) ;
}
}
}
Ok ( db_update )
}
}
impl __sdk ::InModule for DbUpdate {
type Module = RemoteModule ;
}
impl __sdk ::DbUpdate for DbUpdate {
fn apply_to_client_cache (
& self ,
cache : & mut __sdk ::ClientCache < RemoteModule > ,
) -> AppliedDiff < '_ > {
let mut diff = AppliedDiff ::default ( ) ;
2026-02-08 00:10:10 -08:00
diff . bot = cache
. apply_diff_to_table ::< Bot > ( " bot " , & self . bot )
. with_updates_by_pk ( | row | & row . id ) ;
2026-02-07 22:45:43 -08:00
diff . lobby = cache
. apply_diff_to_table ::< Lobby > ( " lobby " , & self . lobby )
. with_updates_by_pk ( | row | & row . id ) ;
2026-02-07 17:46:03 -08:00
diff . player = cache
. apply_diff_to_table ::< Player > ( " player " , & self . player )
. with_updates_by_pk ( | row | & row . identity ) ;
2026-02-12 17:06:28 -08:00
diff . tile = cache
. apply_diff_to_table ::< DbTile > ( " tile " , & self . tile )
. with_updates_by_pk ( | row | & row . id ) ;
2026-02-07 22:45:43 -08:00
diff . wall = cache
2026-02-12 17:06:28 -08:00
. apply_diff_to_table ::< DbWall > ( " wall " , & self . wall )
2026-02-08 20:21:23 -08:00
. with_updates_by_pk ( | row | & row . lobby_id ) ;
2026-02-06 23:51:08 -08:00
diff
}
}
#[ derive(Default) ]
#[ allow(non_snake_case) ]
#[ doc(hidden) ]
pub struct AppliedDiff < ' r > {
2026-02-08 00:10:10 -08:00
bot : __sdk ::TableAppliedDiff < ' r , Bot > ,
2026-02-07 22:45:43 -08:00
lobby : __sdk ::TableAppliedDiff < ' r , Lobby > ,
2026-02-07 17:46:03 -08:00
player : __sdk ::TableAppliedDiff < ' r , Player > ,
2026-02-12 17:06:28 -08:00
tile : __sdk ::TableAppliedDiff < ' r , DbTile > ,
wall : __sdk ::TableAppliedDiff < ' r , DbWall > ,
2026-02-06 23:51:08 -08:00
__unused : std ::marker ::PhantomData < & ' r ( ) > ,
}
impl __sdk ::InModule for AppliedDiff < '_ > {
type Module = RemoteModule ;
}
impl < ' r > __sdk ::AppliedDiff < ' r > for AppliedDiff < ' r > {
fn invoke_row_callbacks (
& self ,
event : & EventContext ,
callbacks : & mut __sdk ::DbCallbacks < RemoteModule > ,
) {
2026-02-08 00:10:10 -08:00
callbacks . invoke_table_row_callbacks ::< Bot > ( " bot " , & self . bot , event ) ;
2026-02-07 22:45:43 -08:00
callbacks . invoke_table_row_callbacks ::< Lobby > ( " lobby " , & self . lobby , event ) ;
2026-02-07 17:46:03 -08:00
callbacks . invoke_table_row_callbacks ::< Player > ( " player " , & self . player , event ) ;
2026-02-12 17:06:28 -08:00
callbacks . invoke_table_row_callbacks ::< DbTile > ( " tile " , & self . tile , event ) ;
callbacks . invoke_table_row_callbacks ::< DbWall > ( " wall " , & self . wall , event ) ;
2026-02-06 23:51:08 -08:00
}
}
#[ doc(hidden) ]
pub struct RemoteModule ;
impl __sdk ::InModule for RemoteModule {
type Module = Self ;
}
/// The `reducers` field of [`EventContext`] and [`DbConnection`],
/// with methods provided by extension traits for each reducer defined by the module.
pub struct RemoteReducers {
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::InModule for RemoteReducers {
type Module = RemoteModule ;
}
/// The `procedures` field of [`DbConnection`] and other [`DbContext`] types,
/// with methods provided by extension traits for each procedure defined by the module.
pub struct RemoteProcedures {
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::InModule for RemoteProcedures {
type Module = RemoteModule ;
}
#[ doc(hidden) ]
/// The `set_reducer_flags` field of [`DbConnection`],
/// with methods provided by extension traits for each reducer defined by the module.
/// Each method sets the flags for the reducer with the same name.
///
/// This type is currently unstable and may be removed without a major version bump.
pub struct SetReducerFlags {
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::InModule for SetReducerFlags {
type Module = RemoteModule ;
}
/// The `db` field of [`EventContext`] and [`DbConnection`],
/// with methods provided by extension traits for each table defined by the module.
pub struct RemoteTables {
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::InModule for RemoteTables {
type Module = RemoteModule ;
}
/// A connection to a remote module, including a materialized view of a subset of the database.
///
/// Connect to a remote module by calling [`DbConnection::builder`]
/// and using the [`__sdk::DbConnectionBuilder`] builder-pattern constructor.
///
/// You must explicitly advance the connection by calling any one of:
///
/// - [`DbConnection::frame_tick`].
/// - [`DbConnection::run_threaded`].
/// - [`DbConnection::run_async`].
/// - [`DbConnection::advance_one_message`].
/// - [`DbConnection::advance_one_message_blocking`].
/// - [`DbConnection::advance_one_message_async`].
///
/// Which of these methods you should call depends on the specific needs of your application,
/// but you must call one of them, or else the connection will never progress.
pub struct DbConnection {
/// Access to tables defined by the module via extension traits implemented for [`RemoteTables`].
pub db : RemoteTables ,
/// Access to reducers defined by the module via extension traits implemented for [`RemoteReducers`].
pub reducers : RemoteReducers ,
#[ doc(hidden) ]
/// Access to setting the call-flags of each reducer defined for each reducer defined by the module
/// via extension traits implemented for [`SetReducerFlags`].
///
/// This type is currently unstable and may be removed without a major version bump.
pub set_reducer_flags : SetReducerFlags ,
/// Access to procedures defined by the module via extension traits implemented for [`RemoteProcedures`].
pub procedures : RemoteProcedures ,
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::InModule for DbConnection {
type Module = RemoteModule ;
}
impl __sdk ::DbContext for DbConnection {
type DbView = RemoteTables ;
type Reducers = RemoteReducers ;
type Procedures = RemoteProcedures ;
type SetReducerFlags = SetReducerFlags ;
fn db ( & self ) -> & Self ::DbView {
& self . db
}
fn reducers ( & self ) -> & Self ::Reducers {
& self . reducers
}
fn procedures ( & self ) -> & Self ::Procedures {
& self . procedures
}
fn set_reducer_flags ( & self ) -> & Self ::SetReducerFlags {
& self . set_reducer_flags
}
fn is_active ( & self ) -> bool {
self . imp . is_active ( )
}
fn disconnect ( & self ) -> __sdk ::Result < ( ) > {
self . imp . disconnect ( )
}
type SubscriptionBuilder = __sdk ::SubscriptionBuilder < RemoteModule > ;
fn subscription_builder ( & self ) -> Self ::SubscriptionBuilder {
__sdk ::SubscriptionBuilder ::new ( & self . imp )
}
fn try_identity ( & self ) -> Option < __sdk ::Identity > {
self . imp . try_identity ( )
}
fn connection_id ( & self ) -> __sdk ::ConnectionId {
self . imp . connection_id ( )
}
fn try_connection_id ( & self ) -> Option < __sdk ::ConnectionId > {
self . imp . try_connection_id ( )
}
}
impl DbConnection {
/// Builder-pattern constructor for a connection to a remote module.
///
/// See [`__sdk::DbConnectionBuilder`] for required and optional configuration for the new connection.
pub fn builder ( ) -> __sdk ::DbConnectionBuilder < RemoteModule > {
__sdk ::DbConnectionBuilder ::new ( )
}
/// If any WebSocket messages are waiting, process one of them.
///
/// Returns `true` if a message was processed, or `false` if the queue is empty.
/// Callers should invoke this message in a loop until it returns `false`
/// or for as much time is available to process messages.
///
/// Returns an error if the connection is disconnected.
/// If the disconnection in question was normal,
/// i.e. the result of a call to [`__sdk::DbContext::disconnect`],
/// the returned error will be downcastable to [`__sdk::DisconnectedError`].
///
/// This is a low-level primitive exposed for power users who need significant control over scheduling.
/// Most applications should call [`Self::frame_tick`] each frame
/// to fully exhaust the queue whenever time is available.
pub fn advance_one_message ( & self ) -> __sdk ::Result < bool > {
self . imp . advance_one_message ( )
}
/// Process one WebSocket message, potentially blocking the current thread until one is received.
///
/// Returns an error if the connection is disconnected.
/// If the disconnection in question was normal,
/// i.e. the result of a call to [`__sdk::DbContext::disconnect`],
/// the returned error will be downcastable to [`__sdk::DisconnectedError`].
///
/// This is a low-level primitive exposed for power users who need significant control over scheduling.
/// Most applications should call [`Self::run_threaded`] to spawn a thread
/// which advances the connection automatically.
pub fn advance_one_message_blocking ( & self ) -> __sdk ::Result < ( ) > {
self . imp . advance_one_message_blocking ( )
}
/// Process one WebSocket message, `await`ing until one is received.
///
/// Returns an error if the connection is disconnected.
/// If the disconnection in question was normal,
/// i.e. the result of a call to [`__sdk::DbContext::disconnect`],
/// the returned error will be downcastable to [`__sdk::DisconnectedError`].
///
/// This is a low-level primitive exposed for power users who need significant control over scheduling.
/// Most applications should call [`Self::run_async`] to run an `async` loop
/// which advances the connection when polled.
pub async fn advance_one_message_async ( & self ) -> __sdk ::Result < ( ) > {
self . imp . advance_one_message_async ( ) . await
}
/// Process all WebSocket messages waiting in the queue,
/// then return without `await`ing or blocking the current thread.
pub fn frame_tick ( & self ) -> __sdk ::Result < ( ) > {
self . imp . frame_tick ( )
}
/// Spawn a thread which processes WebSocket messages as they are received.
pub fn run_threaded ( & self ) -> std ::thread ::JoinHandle < ( ) > {
self . imp . run_threaded ( )
}
/// Run an `async` loop which processes WebSocket messages when polled.
pub async fn run_async ( & self ) -> __sdk ::Result < ( ) > {
self . imp . run_async ( ) . await
}
}
impl __sdk ::DbConnection for DbConnection {
fn new ( imp : __sdk ::DbContextImpl < RemoteModule > ) -> Self {
Self {
db : RemoteTables { imp : imp . clone ( ) } ,
reducers : RemoteReducers { imp : imp . clone ( ) } ,
procedures : RemoteProcedures { imp : imp . clone ( ) } ,
set_reducer_flags : SetReducerFlags { imp : imp . clone ( ) } ,
imp ,
}
}
}
/// A handle on a subscribed query.
// TODO: Document this better after implementing the new subscription API.
#[ derive(Clone) ]
pub struct SubscriptionHandle {
imp : __sdk ::SubscriptionHandleImpl < RemoteModule > ,
}
impl __sdk ::InModule for SubscriptionHandle {
type Module = RemoteModule ;
}
impl __sdk ::SubscriptionHandle for SubscriptionHandle {
fn new ( imp : __sdk ::SubscriptionHandleImpl < RemoteModule > ) -> Self {
Self { imp }
}
/// Returns true if this subscription has been terminated due to an unsubscribe call or an error.
fn is_ended ( & self ) -> bool {
self . imp . is_ended ( )
}
/// Returns true if this subscription has been applied and has not yet been unsubscribed.
fn is_active ( & self ) -> bool {
self . imp . is_active ( )
}
/// Unsubscribe from the query controlled by this `SubscriptionHandle`,
/// then run `on_end` when its rows are removed from the client cache.
fn unsubscribe_then ( self , on_end : __sdk ::OnEndedCallback < RemoteModule > ) -> __sdk ::Result < ( ) > {
self . imp . unsubscribe_then ( Some ( on_end ) )
}
fn unsubscribe ( self ) -> __sdk ::Result < ( ) > {
self . imp . unsubscribe_then ( None )
}
}
/// Alias trait for a [`__sdk::DbContext`] connected to this module,
/// with that trait's associated types bounded to this module's concrete types.
///
/// Users can use this trait as a boundary on definitions which should accept
/// either a [`DbConnection`] or an [`EventContext`] and operate on either.
pub trait RemoteDbContext :
__sdk ::DbContext <
DbView = RemoteTables ,
Reducers = RemoteReducers ,
SetReducerFlags = SetReducerFlags ,
SubscriptionBuilder = __sdk ::SubscriptionBuilder < RemoteModule > ,
>
{
}
impl <
Ctx : __sdk ::DbContext <
DbView = RemoteTables ,
Reducers = RemoteReducers ,
SetReducerFlags = SetReducerFlags ,
SubscriptionBuilder = __sdk ::SubscriptionBuilder < RemoteModule > ,
> ,
> RemoteDbContext for Ctx
{
}
/// An [`__sdk::DbContext`] augmented with a [`__sdk::Event`],
/// passed to [`__sdk::Table::on_insert`], [`__sdk::Table::on_delete`] and [`__sdk::TableWithPrimaryKey::on_update`] callbacks.
pub struct EventContext {
/// Access to tables defined by the module via extension traits implemented for [`RemoteTables`].
pub db : RemoteTables ,
/// Access to reducers defined by the module via extension traits implemented for [`RemoteReducers`].
pub reducers : RemoteReducers ,
/// Access to setting the call-flags of each reducer defined for each reducer defined by the module
/// via extension traits implemented for [`SetReducerFlags`].
///
/// This type is currently unstable and may be removed without a major version bump.
pub set_reducer_flags : SetReducerFlags ,
/// Access to procedures defined by the module via extension traits implemented for [`RemoteProcedures`].
pub procedures : RemoteProcedures ,
/// The event which caused these callbacks to run.
pub event : __sdk ::Event < Reducer > ,
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::AbstractEventContext for EventContext {
type Event = __sdk ::Event < Reducer > ;
fn event ( & self ) -> & Self ::Event {
& self . event
}
fn new ( imp : __sdk ::DbContextImpl < RemoteModule > , event : Self ::Event ) -> Self {
Self {
db : RemoteTables { imp : imp . clone ( ) } ,
reducers : RemoteReducers { imp : imp . clone ( ) } ,
set_reducer_flags : SetReducerFlags { imp : imp . clone ( ) } ,
procedures : RemoteProcedures { imp : imp . clone ( ) } ,
event ,
imp ,
}
}
}
impl __sdk ::InModule for EventContext {
type Module = RemoteModule ;
}
impl __sdk ::DbContext for EventContext {
type DbView = RemoteTables ;
type Reducers = RemoteReducers ;
type Procedures = RemoteProcedures ;
type SetReducerFlags = SetReducerFlags ;
fn db ( & self ) -> & Self ::DbView {
& self . db
}
fn reducers ( & self ) -> & Self ::Reducers {
& self . reducers
}
fn procedures ( & self ) -> & Self ::Procedures {
& self . procedures
}
fn set_reducer_flags ( & self ) -> & Self ::SetReducerFlags {
& self . set_reducer_flags
}
fn is_active ( & self ) -> bool {
self . imp . is_active ( )
}
fn disconnect ( & self ) -> __sdk ::Result < ( ) > {
self . imp . disconnect ( )
}
type SubscriptionBuilder = __sdk ::SubscriptionBuilder < RemoteModule > ;
fn subscription_builder ( & self ) -> Self ::SubscriptionBuilder {
__sdk ::SubscriptionBuilder ::new ( & self . imp )
}
fn try_identity ( & self ) -> Option < __sdk ::Identity > {
self . imp . try_identity ( )
}
fn connection_id ( & self ) -> __sdk ::ConnectionId {
self . imp . connection_id ( )
}
fn try_connection_id ( & self ) -> Option < __sdk ::ConnectionId > {
self . imp . try_connection_id ( )
}
}
impl __sdk ::EventContext for EventContext { }
/// An [`__sdk::DbContext`] augmented with a [`__sdk::ReducerEvent`],
/// passed to on-reducer callbacks.
pub struct ReducerEventContext {
/// Access to tables defined by the module via extension traits implemented for [`RemoteTables`].
pub db : RemoteTables ,
/// Access to reducers defined by the module via extension traits implemented for [`RemoteReducers`].
pub reducers : RemoteReducers ,
/// Access to setting the call-flags of each reducer defined for each reducer defined by the module
/// via extension traits implemented for [`SetReducerFlags`].
///
/// This type is currently unstable and may be removed without a major version bump.
pub set_reducer_flags : SetReducerFlags ,
/// Access to procedures defined by the module via extension traits implemented for [`RemoteProcedures`].
pub procedures : RemoteProcedures ,
/// The event which caused these callbacks to run.
pub event : __sdk ::ReducerEvent < Reducer > ,
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::AbstractEventContext for ReducerEventContext {
type Event = __sdk ::ReducerEvent < Reducer > ;
fn event ( & self ) -> & Self ::Event {
& self . event
}
fn new ( imp : __sdk ::DbContextImpl < RemoteModule > , event : Self ::Event ) -> Self {
Self {
db : RemoteTables { imp : imp . clone ( ) } ,
reducers : RemoteReducers { imp : imp . clone ( ) } ,
set_reducer_flags : SetReducerFlags { imp : imp . clone ( ) } ,
procedures : RemoteProcedures { imp : imp . clone ( ) } ,
event ,
imp ,
}
}
}
impl __sdk ::InModule for ReducerEventContext {
type Module = RemoteModule ;
}
impl __sdk ::DbContext for ReducerEventContext {
type DbView = RemoteTables ;
type Reducers = RemoteReducers ;
type Procedures = RemoteProcedures ;
type SetReducerFlags = SetReducerFlags ;
fn db ( & self ) -> & Self ::DbView {
& self . db
}
fn reducers ( & self ) -> & Self ::Reducers {
& self . reducers
}
fn procedures ( & self ) -> & Self ::Procedures {
& self . procedures
}
fn set_reducer_flags ( & self ) -> & Self ::SetReducerFlags {
& self . set_reducer_flags
}
fn is_active ( & self ) -> bool {
self . imp . is_active ( )
}
fn disconnect ( & self ) -> __sdk ::Result < ( ) > {
self . imp . disconnect ( )
}
type SubscriptionBuilder = __sdk ::SubscriptionBuilder < RemoteModule > ;
fn subscription_builder ( & self ) -> Self ::SubscriptionBuilder {
__sdk ::SubscriptionBuilder ::new ( & self . imp )
}
fn try_identity ( & self ) -> Option < __sdk ::Identity > {
self . imp . try_identity ( )
}
fn connection_id ( & self ) -> __sdk ::ConnectionId {
self . imp . connection_id ( )
}
fn try_connection_id ( & self ) -> Option < __sdk ::ConnectionId > {
self . imp . try_connection_id ( )
}
}
impl __sdk ::ReducerEventContext for ReducerEventContext { }
/// An [`__sdk::DbContext`] passed to procedure callbacks.
pub struct ProcedureEventContext {
/// Access to tables defined by the module via extension traits implemented for [`RemoteTables`].
pub db : RemoteTables ,
/// Access to reducers defined by the module via extension traits implemented for [`RemoteReducers`].
pub reducers : RemoteReducers ,
/// Access to setting the call-flags of each reducer defined for each reducer defined by the module
/// via extension traits implemented for [`SetReducerFlags`].
///
/// This type is currently unstable and may be removed without a major version bump.
pub set_reducer_flags : SetReducerFlags ,
/// Access to procedures defined by the module via extension traits implemented for [`RemoteProcedures`].
pub procedures : RemoteProcedures ,
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::AbstractEventContext for ProcedureEventContext {
type Event = ( ) ;
fn event ( & self ) -> & Self ::Event {
& ( )
}
fn new ( imp : __sdk ::DbContextImpl < RemoteModule > , _event : Self ::Event ) -> Self {
Self {
db : RemoteTables { imp : imp . clone ( ) } ,
reducers : RemoteReducers { imp : imp . clone ( ) } ,
procedures : RemoteProcedures { imp : imp . clone ( ) } ,
set_reducer_flags : SetReducerFlags { imp : imp . clone ( ) } ,
imp ,
}
}
}
impl __sdk ::InModule for ProcedureEventContext {
type Module = RemoteModule ;
}
impl __sdk ::DbContext for ProcedureEventContext {
type DbView = RemoteTables ;
type Reducers = RemoteReducers ;
type Procedures = RemoteProcedures ;
type SetReducerFlags = SetReducerFlags ;
fn db ( & self ) -> & Self ::DbView {
& self . db
}
fn reducers ( & self ) -> & Self ::Reducers {
& self . reducers
}
fn procedures ( & self ) -> & Self ::Procedures {
& self . procedures
}
fn set_reducer_flags ( & self ) -> & Self ::SetReducerFlags {
& self . set_reducer_flags
}
fn is_active ( & self ) -> bool {
self . imp . is_active ( )
}
fn disconnect ( & self ) -> __sdk ::Result < ( ) > {
self . imp . disconnect ( )
}
type SubscriptionBuilder = __sdk ::SubscriptionBuilder < RemoteModule > ;
fn subscription_builder ( & self ) -> Self ::SubscriptionBuilder {
__sdk ::SubscriptionBuilder ::new ( & self . imp )
}
fn try_identity ( & self ) -> Option < __sdk ::Identity > {
self . imp . try_identity ( )
}
fn connection_id ( & self ) -> __sdk ::ConnectionId {
self . imp . connection_id ( )
}
fn try_connection_id ( & self ) -> Option < __sdk ::ConnectionId > {
self . imp . try_connection_id ( )
}
}
impl __sdk ::ProcedureEventContext for ProcedureEventContext { }
/// An [`__sdk::DbContext`] passed to [`__sdk::SubscriptionBuilder::on_applied`] and [`SubscriptionHandle::unsubscribe_then`] callbacks.
pub struct SubscriptionEventContext {
/// Access to tables defined by the module via extension traits implemented for [`RemoteTables`].
pub db : RemoteTables ,
/// Access to reducers defined by the module via extension traits implemented for [`RemoteReducers`].
pub reducers : RemoteReducers ,
/// Access to setting the call-flags of each reducer defined for each reducer defined by the module
/// via extension traits implemented for [`SetReducerFlags`].
///
/// This type is currently unstable and may be removed without a major version bump.
pub set_reducer_flags : SetReducerFlags ,
/// Access to procedures defined by the module via extension traits implemented for [`RemoteProcedures`].
pub procedures : RemoteProcedures ,
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::AbstractEventContext for SubscriptionEventContext {
type Event = ( ) ;
fn event ( & self ) -> & Self ::Event {
& ( )
}
fn new ( imp : __sdk ::DbContextImpl < RemoteModule > , _event : Self ::Event ) -> Self {
Self {
db : RemoteTables { imp : imp . clone ( ) } ,
reducers : RemoteReducers { imp : imp . clone ( ) } ,
procedures : RemoteProcedures { imp : imp . clone ( ) } ,
set_reducer_flags : SetReducerFlags { imp : imp . clone ( ) } ,
imp ,
}
}
}
impl __sdk ::InModule for SubscriptionEventContext {
type Module = RemoteModule ;
}
impl __sdk ::DbContext for SubscriptionEventContext {
type DbView = RemoteTables ;
type Reducers = RemoteReducers ;
type Procedures = RemoteProcedures ;
type SetReducerFlags = SetReducerFlags ;
fn db ( & self ) -> & Self ::DbView {
& self . db
}
fn reducers ( & self ) -> & Self ::Reducers {
& self . reducers
}
fn procedures ( & self ) -> & Self ::Procedures {
& self . procedures
}
fn set_reducer_flags ( & self ) -> & Self ::SetReducerFlags {
& self . set_reducer_flags
}
fn is_active ( & self ) -> bool {
self . imp . is_active ( )
}
fn disconnect ( & self ) -> __sdk ::Result < ( ) > {
self . imp . disconnect ( )
}
type SubscriptionBuilder = __sdk ::SubscriptionBuilder < RemoteModule > ;
fn subscription_builder ( & self ) -> Self ::SubscriptionBuilder {
__sdk ::SubscriptionBuilder ::new ( & self . imp )
}
fn try_identity ( & self ) -> Option < __sdk ::Identity > {
self . imp . try_identity ( )
}
fn connection_id ( & self ) -> __sdk ::ConnectionId {
self . imp . connection_id ( )
}
fn try_connection_id ( & self ) -> Option < __sdk ::ConnectionId > {
self . imp . try_connection_id ( )
}
}
impl __sdk ::SubscriptionEventContext for SubscriptionEventContext { }
/// An [`__sdk::DbContext`] augmented with a [`__sdk::Error`],
/// passed to [`__sdk::DbConnectionBuilder::on_disconnect`], [`__sdk::DbConnectionBuilder::on_connect_error`] and [`__sdk::SubscriptionBuilder::on_error`] callbacks.
pub struct ErrorContext {
/// Access to tables defined by the module via extension traits implemented for [`RemoteTables`].
pub db : RemoteTables ,
/// Access to reducers defined by the module via extension traits implemented for [`RemoteReducers`].
pub reducers : RemoteReducers ,
/// Access to setting the call-flags of each reducer defined for each reducer defined by the module
/// via extension traits implemented for [`SetReducerFlags`].
///
/// This type is currently unstable and may be removed without a major version bump.
pub set_reducer_flags : SetReducerFlags ,
/// Access to procedures defined by the module via extension traits implemented for [`RemoteProcedures`].
pub procedures : RemoteProcedures ,
/// The event which caused these callbacks to run.
pub event : Option < __sdk ::Error > ,
imp : __sdk ::DbContextImpl < RemoteModule > ,
}
impl __sdk ::AbstractEventContext for ErrorContext {
type Event = Option < __sdk ::Error > ;
fn event ( & self ) -> & Self ::Event {
& self . event
}
fn new ( imp : __sdk ::DbContextImpl < RemoteModule > , event : Self ::Event ) -> Self {
Self {
db : RemoteTables { imp : imp . clone ( ) } ,
reducers : RemoteReducers { imp : imp . clone ( ) } ,
set_reducer_flags : SetReducerFlags { imp : imp . clone ( ) } ,
procedures : RemoteProcedures { imp : imp . clone ( ) } ,
event ,
imp ,
}
}
}
impl __sdk ::InModule for ErrorContext {
type Module = RemoteModule ;
}
impl __sdk ::DbContext for ErrorContext {
type DbView = RemoteTables ;
type Reducers = RemoteReducers ;
type Procedures = RemoteProcedures ;
type SetReducerFlags = SetReducerFlags ;
fn db ( & self ) -> & Self ::DbView {
& self . db
}
fn reducers ( & self ) -> & Self ::Reducers {
& self . reducers
}
fn procedures ( & self ) -> & Self ::Procedures {
& self . procedures
}
fn set_reducer_flags ( & self ) -> & Self ::SetReducerFlags {
& self . set_reducer_flags
}
fn is_active ( & self ) -> bool {
self . imp . is_active ( )
}
fn disconnect ( & self ) -> __sdk ::Result < ( ) > {
self . imp . disconnect ( )
}
type SubscriptionBuilder = __sdk ::SubscriptionBuilder < RemoteModule > ;
fn subscription_builder ( & self ) -> Self ::SubscriptionBuilder {
__sdk ::SubscriptionBuilder ::new ( & self . imp )
}
fn try_identity ( & self ) -> Option < __sdk ::Identity > {
self . imp . try_identity ( )
}
fn connection_id ( & self ) -> __sdk ::ConnectionId {
self . imp . connection_id ( )
}
fn try_connection_id ( & self ) -> Option < __sdk ::ConnectionId > {
self . imp . try_connection_id ( )
}
}
impl __sdk ::ErrorContext for ErrorContext { }
impl __sdk ::SpacetimeModule for RemoteModule {
type DbConnection = DbConnection ;
type EventContext = EventContext ;
type ReducerEventContext = ReducerEventContext ;
type ProcedureEventContext = ProcedureEventContext ;
type SubscriptionEventContext = SubscriptionEventContext ;
type ErrorContext = ErrorContext ;
type Reducer = Reducer ;
type DbView = RemoteTables ;
type Reducers = RemoteReducers ;
type SetReducerFlags = SetReducerFlags ;
type DbUpdate = DbUpdate ;
type AppliedDiff < ' r > = AppliedDiff < ' r > ;
type SubscriptionHandle = SubscriptionHandle ;
fn register_tables ( client_cache : & mut __sdk ::ClientCache < Self > ) {
2026-02-08 00:10:10 -08:00
bot_table ::register_table ( client_cache ) ;
2026-02-07 22:45:43 -08:00
lobby_table ::register_table ( client_cache ) ;
2026-02-07 17:46:03 -08:00
player_table ::register_table ( client_cache ) ;
2026-02-12 17:06:28 -08:00
tile_table ::register_table ( client_cache ) ;
2026-02-07 17:46:03 -08:00
wall_table ::register_table ( client_cache ) ;
2026-02-06 23:51:08 -08:00
}
}