Skip to content

Commit e50b6ae

Browse files
committed
[release/v1.7.0]: Revert "ModuleDef and schema changes to support procedures (#3392)"
This reverts commit 0a6aa7c.
1 parent 70994c9 commit e50b6ae

File tree

28 files changed

+184
-716
lines changed

28 files changed

+184
-716
lines changed

Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/bindings-csharp/Runtime/Internal/Autogen/RawMiscModuleExportV9.g.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/bindings-csharp/Runtime/Internal/Autogen/RawProcedureDefV9.g.cs

Lines changed: 0 additions & 41 deletions
This file was deleted.

crates/bindings/tests/snapshots/deps__spacetimedb_bindings_dependencies.snap

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,6 @@ spacetimedb
4242
│ ├── spacetimedb_primitives
4343
│ │ ├── bitflags
4444
│ │ ├── either
45-
│ │ ├── enum_as_inner
46-
│ │ │ ├── heck
47-
│ │ │ ├── proc_macro2 (*)
48-
│ │ │ ├── quote (*)
49-
│ │ │ └── syn (*)
5045
│ │ ├── itertools
5146
│ │ │ └── either
5247
│ │ └── nohash_hasher
@@ -55,7 +50,6 @@ spacetimedb
5550
│ └── spacetimedb_primitives
5651
│ ├── bitflags
5752
│ ├── either
58-
│ ├── enum_as_inner (*)
5953
│ ├── itertools
6054
│ │ └── either
6155
│ └── nohash_hasher
@@ -76,7 +70,11 @@ spacetimedb
7670
│ │ [build-dependencies]
7771
│ │ └── autocfg
7872
│ ├── derive_more (*)
79-
│ ├── enum_as_inner (*)
73+
│ ├── enum_as_inner
74+
│ │ ├── heck
75+
│ │ ├── proc_macro2 (*)
76+
│ │ ├── quote (*)
77+
│ │ └── syn (*)
8078
│ ├── hex
8179
│ ├── itertools (*)
8280
│ ├── spacetimedb_bindings_macro (*)

crates/client-api/src/routes/database.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use spacetimedb::host::module_host::ClientConnectedError;
2323
use spacetimedb::host::ReducerCallError;
2424
use spacetimedb::host::ReducerOutcome;
2525
use spacetimedb::host::UpdateDatabaseResult;
26-
use spacetimedb::host::{FunctionArgs, MigratePlanResult};
26+
use spacetimedb::host::{MigratePlanResult, ReducerArgs};
2727
use spacetimedb::identity::Identity;
2828
use spacetimedb::messages::control_db::{Database, HostType};
2929
use spacetimedb_client_api_messages::name::{
@@ -61,7 +61,7 @@ pub async fn call<S: ControlStateDelegate + NodeDelegate>(
6161
}
6262
let caller_identity = auth.claims.identity;
6363

64-
let args = FunctionArgs::Json(body);
64+
let args = ReducerArgs::Json(body);
6565

6666
let db_identity = name_or_identity.resolve(&worker_ctx).await?;
6767
let database = worker_ctx_find_database(&worker_ctx, &db_identity)

crates/core/src/client/client_connection.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use super::{message_handlers, ClientActorId, MessageHandleError};
1212
use crate::db::relational_db::RelationalDB;
1313
use crate::error::DBError;
1414
use crate::host::module_host::ClientConnectedError;
15-
use crate::host::{FunctionArgs, ModuleHost, NoSuchModule, ReducerCallError, ReducerCallResult};
15+
use crate::host::{ModuleHost, NoSuchModule, ReducerArgs, ReducerCallError, ReducerCallResult};
1616
use crate::messages::websocket::Subscribe;
1717
use crate::util::asyncify;
1818
use crate::util::prometheus_handle::IntGaugeExt;
@@ -809,7 +809,7 @@ impl ClientConnection {
809809
pub async fn call_reducer(
810810
&self,
811811
reducer: &str,
812-
args: FunctionArgs,
812+
args: ReducerArgs,
813813
request_id: RequestId,
814814
timer: Instant,
815815
flags: CallReducerFlags,

crates/core/src/client/message_handlers.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::messages::{SubscriptionUpdateMessage, SwitchedServerMessage, ToProtoc
22
use super::{ClientConnection, DataMessage, Protocol};
33
use crate::energy::EnergyQuanta;
44
use crate::host::module_host::{EventStatus, ModuleEvent, ModuleFunctionCall};
5-
use crate::host::{FunctionArgs, ReducerId};
5+
use crate::host::{ReducerArgs, ReducerId};
66
use crate::identity::Identity;
77
use crate::messages::websocket::{CallReducer, ClientMessage, OneOffQuery};
88
use crate::worker_metrics::WORKER_METRICS;
@@ -36,14 +36,14 @@ pub async fn handle(client: &ClientConnection, message: DataMessage, timer: Inst
3636
let DeserializeWrapper(message) =
3737
serde_json::from_str::<DeserializeWrapper<ClientMessage<Cow<str>>>>(&text)?;
3838
message.map_args(|s| {
39-
FunctionArgs::Json(match s {
39+
ReducerArgs::Json(match s {
4040
Cow::Borrowed(s) => text.slice_ref(s),
4141
Cow::Owned(string) => string.into(),
4242
})
4343
})
4444
}
4545
DataMessage::Binary(message_buf) => bsatn::from_slice::<ClientMessage<&[u8]>>(&message_buf)?
46-
.map_args(|b| FunctionArgs::Bsatn(message_buf.slice_ref(b))),
46+
.map_args(|b| ReducerArgs::Bsatn(message_buf.slice_ref(b))),
4747
};
4848

4949
let module = client.module();

crates/core/src/host/mod.rs

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ use derive_more::Display;
55
use enum_map::Enum;
66
use once_cell::sync::OnceCell;
77
use spacetimedb_lib::bsatn;
8-
use spacetimedb_lib::de::{serde::SeedWrapper, DeserializeSeed};
8+
use spacetimedb_lib::de::serde::SeedWrapper;
9+
use spacetimedb_lib::de::DeserializeSeed;
910
use spacetimedb_lib::ProductValue;
10-
use spacetimedb_schema::def::deserialize::{ArgsSeed, FunctionDef};
11+
use spacetimedb_schema::def::deserialize::ReducerArgsDeserializeSeed;
1112

1213
mod disk_storage;
1314
mod host_controller;
@@ -30,37 +31,37 @@ pub use host_controller::{
3031
pub use module_host::{ModuleHost, NoSuchModule, ReducerCallError, UpdateDatabaseResult};
3132
pub use scheduler::Scheduler;
3233

33-
/// Encoded arguments to a database function.
34-
///
35-
/// A database function is either a reducer or a procedure.
3634
#[derive(Debug)]
37-
pub enum FunctionArgs {
35+
pub enum ReducerArgs {
3836
Json(ByteString),
3937
Bsatn(Bytes),
4038
Nullary,
4139
}
4240

43-
impl FunctionArgs {
44-
fn into_tuple<Def: FunctionDef>(self, seed: ArgsSeed<'_, Def>) -> Result<ArgsTuple, InvalidFunctionArguments> {
45-
self._into_tuple(seed).map_err(|err| InvalidFunctionArguments {
41+
impl ReducerArgs {
42+
fn into_tuple(self, seed: ReducerArgsDeserializeSeed) -> Result<ArgsTuple, InvalidReducerArguments> {
43+
self._into_tuple(seed).map_err(|err| InvalidReducerArguments {
4644
err,
47-
function_name: seed.name().into(),
45+
reducer: (*seed.reducer_def().name).into(),
4846
})
4947
}
50-
fn _into_tuple<Def: FunctionDef>(self, seed: ArgsSeed<'_, Def>) -> anyhow::Result<ArgsTuple> {
48+
fn _into_tuple(self, seed: ReducerArgsDeserializeSeed) -> anyhow::Result<ArgsTuple> {
5149
Ok(match self {
52-
FunctionArgs::Json(json) => ArgsTuple {
50+
ReducerArgs::Json(json) => ArgsTuple {
5351
tuple: from_json_seed(&json, SeedWrapper(seed))?,
5452
bsatn: OnceCell::new(),
5553
json: OnceCell::with_value(json),
5654
},
57-
FunctionArgs::Bsatn(bytes) => ArgsTuple {
55+
ReducerArgs::Bsatn(bytes) => ArgsTuple {
5856
tuple: seed.deserialize(bsatn::Deserializer::new(&mut &bytes[..]))?,
5957
bsatn: OnceCell::with_value(bytes),
6058
json: OnceCell::new(),
6159
},
62-
FunctionArgs::Nullary => {
63-
anyhow::ensure!(seed.params().elements.is_empty(), "failed to typecheck args");
60+
ReducerArgs::Nullary => {
61+
anyhow::ensure!(
62+
seed.reducer_def().params.elements.is_empty(),
63+
"failed to typecheck args"
64+
);
6465
ArgsTuple::nullary()
6566
}
6667
})
@@ -105,33 +106,14 @@ impl Default for ArgsTuple {
105106
// TODO(noa): replace imports from this module with imports straight from primitives.
106107
pub use spacetimedb_primitives::ReducerId;
107108

108-
/// Inner error type for [`InvalidReducerArguments`] and [`InvalidProcedureArguments`].
109109
#[derive(thiserror::Error, Debug)]
110-
#[error("invalid arguments for function {function_name}: {err}")]
111-
pub struct InvalidFunctionArguments {
110+
#[error("invalid arguments for reducer {reducer}: {err}")]
111+
pub struct InvalidReducerArguments {
112112
#[source]
113113
err: anyhow::Error,
114-
function_name: Box<str>,
114+
reducer: Box<str>,
115115
}
116116

117-
/// Newtype over [`InvalidFunctionArguments`] which renders with the word "reducer".
118-
#[derive(thiserror::Error, Debug)]
119-
#[error("invalid arguments for reducer {}: {}", .0.function_name, .0.err)]
120-
pub struct InvalidReducerArguments(
121-
#[from]
122-
#[source]
123-
InvalidFunctionArguments,
124-
);
125-
126-
/// Newtype over [`InvalidFunctionArguments`] which renders with the word "procedure".
127-
#[derive(thiserror::Error, Debug)]
128-
#[error("invalid arguments for procedure {}: {}", .0.function_name, .0.err)]
129-
pub struct InvalidProcedureArguments(
130-
#[from]
131-
#[source]
132-
InvalidFunctionArguments,
133-
);
134-
135117
fn from_json_seed<'de, T: serde::de::DeserializeSeed<'de>>(s: &'de str, seed: T) -> anyhow::Result<T::Value> {
136118
let mut de = serde_json::Deserializer::from_str(s);
137119
let mut track = serde_path_to_error::Track::new();

crates/core/src/host/module_host.rs

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
use super::{
2-
ArgsTuple, FunctionArgs, InvalidReducerArguments, ReducerCallResult, ReducerId, ReducerOutcome, Scheduler,
3-
};
1+
use super::{ArgsTuple, InvalidReducerArguments, ReducerArgs, ReducerCallResult, ReducerId, ReducerOutcome, Scheduler};
42
use crate::client::messages::{OneOffQueryResponseMessage, SerializableMessage};
53
use crate::client::{ClientActorId, ClientConnectionSender};
64
use crate::database_logger::{LogLevel, Record};
@@ -9,7 +7,6 @@ use crate::energy::EnergyQuanta;
97
use crate::error::DBError;
108
use crate::estimation::estimate_rows_scanned;
119
use crate::hash::Hash;
12-
use crate::host::InvalidFunctionArguments;
1310
use crate::identity::Identity;
1411
use crate::messages::control_db::{Database, HostType};
1512
use crate::module_host_context::ModuleCreationContext;
@@ -50,7 +47,7 @@ use spacetimedb_primitives::TableId;
5047
use spacetimedb_query::compile_subscription;
5148
use spacetimedb_sats::ProductValue;
5249
use spacetimedb_schema::auto_migrate::{AutoMigrateError, MigrationPolicy};
53-
use spacetimedb_schema::def::deserialize::ArgsSeed;
50+
use spacetimedb_schema::def::deserialize::ReducerArgsDeserializeSeed;
5451
use spacetimedb_schema::def::{ModuleDef, ReducerDef, TableDef};
5552
use spacetimedb_schema::schema::{Schema, TableSchema};
5653
use spacetimedb_vm::relation::RelValue;
@@ -887,7 +884,7 @@ impl ModuleHost {
887884
None,
888885
reducer_id,
889886
reducer_def,
890-
FunctionArgs::Nullary,
887+
ReducerArgs::Nullary,
891888
inst,
892889
)?;
893890

@@ -982,10 +979,10 @@ impl ModuleHost {
982979
log::error!(
983980
"`call_identity_disconnected`: fallback transaction to delete from `st_client` failed: {err}"
984981
);
985-
InvalidReducerArguments(InvalidFunctionArguments {
982+
InvalidReducerArguments {
986983
err: err.into(),
987-
function_name: reducer_name.into(),
988-
})
984+
reducer: reducer_name.into(),
985+
}
989986
.into()
990987
})
991988
};
@@ -1014,7 +1011,7 @@ impl ModuleHost {
10141011
None,
10151012
reducer_id,
10161013
reducer_def,
1017-
FunctionArgs::Nullary,
1014+
ReducerArgs::Nullary,
10181015
inst,
10191016
);
10201017

@@ -1100,10 +1097,10 @@ impl ModuleHost {
11001097
timer: Option<Instant>,
11011098
reducer_id: ReducerId,
11021099
reducer_def: &ReducerDef,
1103-
args: FunctionArgs,
1100+
args: ReducerArgs,
11041101
) -> Result<ReducerCallResult, ReducerCallError> {
1105-
let reducer_seed = ArgsSeed(self.info.module_def.typespace().with_type(reducer_def));
1106-
let args = args.into_tuple(reducer_seed).map_err(InvalidReducerArguments)?;
1102+
let reducer_seed = ReducerArgsDeserializeSeed(self.info.module_def.typespace().with_type(reducer_def));
1103+
let args = args.into_tuple(reducer_seed)?;
11071104
let caller_connection_id = caller_connection_id.unwrap_or(ConnectionId::ZERO);
11081105

11091106
Ok(self
@@ -1134,11 +1131,11 @@ impl ModuleHost {
11341131
timer: Option<Instant>,
11351132
reducer_id: ReducerId,
11361133
reducer_def: &ReducerDef,
1137-
args: FunctionArgs,
1134+
args: ReducerArgs,
11381135
module_instance: &mut Instance,
11391136
) -> Result<ReducerCallResult, ReducerCallError> {
1140-
let reducer_seed = ArgsSeed(self.info.module_def.typespace().with_type(reducer_def));
1141-
let args = args.into_tuple(reducer_seed).map_err(InvalidReducerArguments)?;
1137+
let reducer_seed = ReducerArgsDeserializeSeed(self.info.module_def.typespace().with_type(reducer_def));
1138+
let args = args.into_tuple(reducer_seed)?;
11421139
let caller_connection_id = caller_connection_id.unwrap_or(ConnectionId::ZERO);
11431140

11441141
Ok(module_instance.call_reducer(
@@ -1164,7 +1161,7 @@ impl ModuleHost {
11641161
request_id: Option<RequestId>,
11651162
timer: Option<Instant>,
11661163
reducer_name: &str,
1167-
args: FunctionArgs,
1164+
args: ReducerArgs,
11681165
) -> Result<ReducerCallResult, ReducerCallError> {
11691166
let res = async {
11701167
let (reducer_id, reducer_def) = self
@@ -1243,12 +1240,10 @@ impl ModuleHost {
12431240
Ok(inst.call_reducer(Some(tx), params))
12441241
}
12451242
Ok(None) => Err(ReducerCallError::ScheduleReducerNotFound),
1246-
Err(err) => Err(ReducerCallError::Args(InvalidReducerArguments(
1247-
InvalidFunctionArguments {
1248-
err,
1249-
function_name: REDUCER.into(),
1250-
},
1251-
))),
1243+
Err(err) => Err(ReducerCallError::Args(InvalidReducerArguments {
1244+
err,
1245+
reducer: REDUCER.into(),
1246+
})),
12521247
}
12531248
})
12541249
.await?

0 commit comments

Comments
 (0)