spacetimedb_sdk/
lib.rs

1//! The SpacetimeDB Rust client SDK, which enables native Rust applications
2//! to communicate with SpacetimeDB modules.
3//!
4//! This library depends on a set of module-specific definitions
5//! autogenerated by [the SpacetimeDB CLI](https://spacetimedb.com/install).
6//! See [the SpacetimeDB Rust client SDK reference](https://spacetimedb.com/docs/sdks/rust#generate-module-bindings)
7//! for more oh how to generate these bindings.
8
9// Any `#[doc(hidden)]` modules or uses are public because
10// code generated by the CLI's codegen references them,
11// but users should not.
12
13mod callbacks;
14mod client_cache;
15mod compression;
16mod db_connection;
17mod metrics;
18mod spacetime_module;
19mod subscription;
20mod websocket;
21
22pub mod credentials;
23pub mod db_context;
24pub mod error;
25pub mod event;
26pub mod table;
27
28pub use db_connection::DbConnectionBuilder;
29pub use db_context::DbContext;
30pub use error::{Error, Result};
31pub use event::{Event, ReducerEvent, Status};
32pub use table::{Table, TableWithPrimaryKey};
33
34pub use spacetime_module::SubscriptionHandle;
35pub use spacetimedb_client_api_messages::websocket::Compression;
36pub use spacetimedb_lib::{ConnectionId, Identity, ScheduleAt, TimeDuration, Timestamp, Uuid};
37pub use spacetimedb_sats::{i256, u256};
38
39#[doc(hidden)]
40pub mod __codegen {
41    //! Names and definitions referenced by the CLI's codegen.
42    //!
43    //! Necessarily public, but should not be considered part of this library's public interface.
44    //! These may change incompatibly without a major version bump.
45    pub use http;
46    pub use log;
47    pub use spacetimedb_client_api_messages::websocket as __ws;
48    pub use spacetimedb_lib as __lib;
49    pub use spacetimedb_sats as __sats;
50
51    pub use crate::callbacks::{CallbackId, DbCallbacks};
52    pub use crate::client_cache::{ClientCache, TableAppliedDiff, TableHandle, UniqueConstraintHandle};
53    pub use crate::db_connection::DbContextImpl;
54    pub use crate::error::{Error, InternalError, Result};
55    pub use crate::spacetime_module::{
56        parse_reducer_args, AbstractEventContext, AppliedDiff, DbConnection, DbUpdate, ErrorContext, EventContext,
57        InModule, ProcedureEventContext, Reducer, ReducerEventContext, SpacetimeModule, SubscriptionEventContext,
58        SubscriptionHandle, TableUpdate,
59    };
60    pub use crate::subscription::{OnEndedCallback, SubscriptionBuilder, SubscriptionHandleImpl};
61    pub use crate::{
62        ConnectionId, DbConnectionBuilder, DbContext, Event, Identity, ReducerEvent, ScheduleAt, Table,
63        TableWithPrimaryKey, TimeDuration, Timestamp, Uuid,
64    };
65}
66
67#[doc(hidden)]
68pub mod unstable {
69    //! Unstable interfaces not ready for the prime time.
70    //!
71    //! These may change incompatibly without a major version bump.
72    pub use crate::db_connection::set_connection_id;
73    pub use crate::metrics::{ClientMetrics, CLIENT_METRICS};
74    pub use spacetimedb_client_api_messages::websocket::CallReducerFlags;
75}