Skip to content

Commit e949fba

Browse files
committed
define TableName backed by EcoString and optimize with it
define `ReducerName` backed by `EcoString`
1 parent 504b13b commit e949fba

60 files changed

Lines changed: 391 additions & 278 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

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

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ derive_more = "0.99"
179179
dialoguer = { version = "0.11", default-features = false }
180180
dirs = "5.0.1"
181181
duct = "0.13.5"
182+
ecow = "0.2.6"
182183
either = "1.9"
183184
email_address = "0.2.4"
184185
enum-as-inner = "0.6"

crates/bench/benches/special.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use spacetimedb_bench::{
88
use spacetimedb_lib::sats::{self, bsatn};
99
use spacetimedb_lib::{bsatn::ToBsatn as _, ProductValue};
1010
use spacetimedb_schema::schema::TableSchema;
11+
use spacetimedb_schema::table_name::TableName;
1112
use spacetimedb_table::page_pool::PagePool;
1213
use spacetimedb_testing::modules::{Csharp, ModuleLanguage, Rust};
1314
use std::sync::Arc;
@@ -136,7 +137,7 @@ fn serialize_benchmarks<
136137
});
137138

138139
let mut table_schema = TableSchema::from_product_type(T::product_type());
139-
table_schema.table_name = name.into();
140+
table_schema.table_name = TableName::new_from_str(name);
140141
let mut table = spacetimedb_table::table::Table::new(
141142
Arc::new(table_schema),
142143
spacetimedb_table::indexes::SquashedOffset::COMMITTED_STATE,

crates/bench/benches/subscription.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use spacetimedb_primitives::{col_list, TableId};
1919
use spacetimedb_query::compile_subscription;
2020
use spacetimedb_sats::{bsatn, product, AlgebraicType, AlgebraicValue, ProductValue};
2121

22+
use spacetimedb_schema::table_name::TableName;
2223
#[cfg(not(target_env = "msvc"))]
2324
use tikv_jemallocator::Jemalloc;
2425

@@ -54,7 +55,7 @@ fn create_table_footprint(db: &RelationalDB) -> Result<TableId, DBError> {
5455
fn insert_op(table_id: TableId, table_name: &str, row: ProductValue) -> DatabaseTableUpdate {
5556
DatabaseTableUpdate {
5657
table_id,
57-
table_name: table_name.into(),
58+
table_name: TableName::new_from_str(table_name),
5859
inserts: [row].into(),
5960
deletes: [].into(),
6061
}

crates/bench/src/schemas.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use serde::Deserialize;
44
use spacetimedb_lib::de::Deserialize as SatsDeserializer;
55
use spacetimedb_lib::sats;
6+
use spacetimedb_schema::table_name::TableName;
67
use std::fmt::Debug;
78
use std::hash::Hash;
89

@@ -159,11 +160,11 @@ impl IndexStrategy {
159160
}
160161
}
161162

162-
pub fn table_name<T: BenchTable>(style: IndexStrategy) -> String {
163+
pub fn table_name<T: BenchTable>(style: IndexStrategy) -> TableName {
163164
let prefix = style.name();
164165
let name = T::name();
165166

166-
format!("{prefix}_{name}")
167+
TableName::new_from_str(&format!("{prefix}_{name}"))
167168
}
168169

169170
// ---------- data synthesis ----------

crates/bench/src/spacetime_module.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use spacetimedb_lib::{
77
};
88
use spacetimedb_paths::RootDir;
99
use spacetimedb_primitives::ColId;
10+
use spacetimedb_schema::table_name::TableName;
1011
use spacetimedb_testing::modules::{start_runtime, LoggerRecord, ModuleHandle, ModuleLanguage};
1112
use tokio::runtime::Runtime;
1213

@@ -192,6 +193,6 @@ impl<L: ModuleLanguage> BenchDatabase for SpacetimeModule<L> {
192193

193194
#[derive(Debug, Clone)]
194195
pub struct TableId {
195-
pascal_case: String,
196-
snake_case: String,
196+
pascal_case: TableName,
197+
snake_case: TableName,
197198
}

crates/bench/src/spacetime_raw.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ impl BenchDatabase for SpacetimeRaw {
4242
let name = table_name::<T>(index_strategy);
4343
self.db.with_auto_commit(Workload::Internal, |tx| {
4444
let mut table_schema = TableSchema::from_product_type(T::product_type());
45-
table_schema.table_name = name.clone().into();
45+
table_schema.table_name = name.clone();
4646
let table_id = self.db.create_table(tx, table_schema)?;
4747
self.db.rename_table(tx, table_id, &name)?;
4848
match index_strategy {

crates/bench/src/sqlite.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use rusqlite::Connection;
88
use spacetimedb_data_structures::map::HashMap;
99
use spacetimedb_lib::sats::{AlgebraicType, AlgebraicValue, ProductType};
1010
use spacetimedb_primitives::ColId;
11+
use spacetimedb_schema::table_name::TableName;
1112
use std::{
1213
fmt::Write,
1314
hint::black_box,
@@ -47,7 +48,7 @@ impl BenchDatabase for SQLite {
4748
})
4849
}
4950

50-
type TableId = String;
51+
type TableId = TableName;
5152

5253
/// We derive the SQLite schema from the AlgebraicType of the table.
5354
fn create_table<T: BenchTable>(

crates/codegen/src/rust.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use spacetimedb_lib::sats::layout::PrimitiveType;
1111
use spacetimedb_lib::sats::AlgebraicTypeRef;
1212
use spacetimedb_schema::def::{ModuleDef, ProcedureDef, ReducerDef, ScopedTypeName, TableDef, TypeDef};
1313
use spacetimedb_schema::identifier::Identifier;
14+
use spacetimedb_schema::reducer_name::ReducerName;
1415
use spacetimedb_schema::schema::TableSchema;
1516
use spacetimedb_schema::type_for_generate::{AlgebraicTypeDef, AlgebraicTypeUse};
1617
use std::collections::BTreeSet;
@@ -1089,19 +1090,19 @@ fn table_access_trait_name(table_name: &Identifier) -> String {
10891090
table_name.deref().to_case(Case::Pascal) + "TableAccess"
10901091
}
10911092

1092-
fn function_args_type_name(function_name: &Identifier) -> String {
1093-
function_name.deref().to_case(Case::Pascal) + "Args"
1093+
fn function_args_type_name(function_name: &str) -> String {
1094+
function_name.to_case(Case::Pascal) + "Args"
10941095
}
10951096

1096-
fn reducer_variant_name(reducer_name: &Identifier) -> String {
1097+
fn reducer_variant_name(reducer_name: &ReducerName) -> String {
10971098
reducer_name.deref().to_case(Case::Pascal)
10981099
}
10991100

1100-
fn reducer_callback_id_name(reducer_name: &Identifier) -> String {
1101+
fn reducer_callback_id_name(reducer_name: &ReducerName) -> String {
11011102
reducer_name.deref().to_case(Case::Pascal) + "CallbackId"
11021103
}
11031104

1104-
fn reducer_module_name(reducer_name: &Identifier) -> String {
1105+
fn reducer_module_name(reducer_name: &ReducerName) -> String {
11051106
reducer_name.deref().to_case(Case::Snake) + "_reducer"
11061107
}
11071108

crates/codegen/src/typescript.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use spacetimedb_lib::sats::AlgebraicTypeRef;
1717
use spacetimedb_primitives::ColId;
1818
use spacetimedb_schema::def::{ConstraintDef, IndexDef, ModuleDef, ReducerDef, ScopedTypeName, TableDef, TypeDef};
1919
use spacetimedb_schema::identifier::Identifier;
20+
use spacetimedb_schema::reducer_name::ReducerName;
2021
use spacetimedb_schema::schema::TableSchema;
2122
use spacetimedb_schema::type_for_generate::{AlgebraicTypeDef, AlgebraicTypeUse, ProductTypeDef};
2223

@@ -213,7 +214,7 @@ impl Lang for TypeScript {
213214
for reducer in iter_reducers(module) {
214215
let reducer_name = &reducer.name;
215216
let reducer_module_name = reducer_module_name(reducer_name);
216-
let args_type = reducer_args_type_name(&reducer.name);
217+
let args_type = reducer_args_type_name(reducer_name);
217218
writeln!(out, "import {args_type} from \"./{reducer_module_name}\";");
218219
writeln!(out, "export {{ {args_type} }};");
219220
}
@@ -818,15 +819,15 @@ fn table_module_name(table_name: &Identifier) -> String {
818819
table_name.deref().to_case(Case::Snake) + "_table"
819820
}
820821

821-
fn reducer_args_type_name(reducer_name: &Identifier) -> String {
822+
fn reducer_args_type_name(reducer_name: &ReducerName) -> String {
822823
reducer_name.deref().to_case(Case::Pascal) + "Reducer"
823824
}
824825

825826
fn procedure_args_type_name(reducer_name: &Identifier) -> String {
826827
reducer_name.deref().to_case(Case::Pascal) + "Procedure"
827828
}
828829

829-
fn reducer_module_name(reducer_name: &Identifier) -> String {
830+
fn reducer_module_name(reducer_name: &ReducerName) -> String {
830831
reducer_name.deref().to_case(Case::Snake) + "_reducer"
831832
}
832833

0 commit comments

Comments
 (0)