Skip to content

Commit a9320f9

Browse files
typescript module
1 parent 8b13a8f commit a9320f9

8 files changed

Lines changed: 140 additions & 27 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
minimum-release-age=1440
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "sdk-test-procedural-view-pk-ts",
3+
"version": "1.0.0",
4+
"license": "ISC",
5+
"type": "module",
6+
"scripts": {
7+
"build": "cargo build -p spacetimedb-standalone && cargo run -p spacetimedb-cli -- build",
8+
"generate-ts": "cargo build -p spacetimedb-standalone && cargo run -p spacetimedb-cli -- generate --lang typescript --out-dir ts-codegen",
9+
"publish": "cargo run -p spacetimedb-cli -- publish"
10+
},
11+
"dependencies": {
12+
"spacetimedb": "workspace:^"
13+
}
14+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { schema, t, table } from 'spacetimedb/server';
2+
3+
const LeftSource = t.row('LeftSource', {
4+
id: t.u64().primaryKey(),
5+
sender: t.identity().index('btree'),
6+
filter: t.u64(),
7+
});
8+
9+
const RightSource = t.row('RightSource', {
10+
id: t.u64().primaryKey(),
11+
sender: t.identity().index('btree'),
12+
filter: t.u64(),
13+
});
14+
15+
const left_source = table({ public: true }, LeftSource);
16+
const right_source = table({ public: true }, RightSource);
17+
18+
const spacetimedb = schema({ left_source, right_source });
19+
export default spacetimedb;
20+
21+
export const insert_left = spacetimedb.reducer(
22+
{ id: t.u64(), filter: t.u64() },
23+
(ctx, { id, filter }) => {
24+
ctx.db.left_source.insert({ id, sender: ctx.sender, filter });
25+
}
26+
);
27+
28+
export const update_left = spacetimedb.reducer(
29+
{ id: t.u64(), filter: t.u64() },
30+
(ctx, { id, filter }) => {
31+
ctx.db.left_source.id.update({ id, sender: ctx.sender, filter });
32+
}
33+
);
34+
35+
export const insert_right = spacetimedb.reducer(
36+
{ id: t.u64(), filter: t.u64() },
37+
(ctx, { id, filter }) => {
38+
ctx.db.right_source.insert({ id, sender: ctx.sender, filter });
39+
}
40+
);
41+
42+
export const sender_left_view = spacetimedb.view(
43+
{ public: true },
44+
t.array(left_source.rowType),
45+
ctx =>
46+
Array.from(ctx.db.left_source.iter()).filter(row =>
47+
row.sender.isEqual(ctx.sender)
48+
)
49+
);
50+
51+
export const sender_right_view = spacetimedb.view(
52+
{ public: true },
53+
t.array(right_source.rowType),
54+
ctx =>
55+
Array.from(ctx.db.right_source.iter()).filter(row =>
56+
row.sender.isEqual(ctx.sender)
57+
)
58+
);
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"compilerOptions": {
3+
"target": "ESNext",
4+
"module": "ESNext",
5+
6+
"strict": true,
7+
"declaration": false,
8+
"emitDeclarationOnly": false,
9+
"noEmit": true,
10+
"skipLibCheck": true,
11+
"forceConsistentCasingInFileNames": true,
12+
"allowImportingTsExtensions": true,
13+
"noImplicitAny": true,
14+
"moduleResolution": "Bundler",
15+
"isolatedDeclarations": false,
16+
17+
"esModuleInterop": false,
18+
"allowSyntheticDefaultImports": false,
19+
"useDefineForClassFields": true,
20+
21+
"verbatimModuleSyntax": true,
22+
"isolatedModules": true
23+
},
24+
"include": ["src/index.ts"],
25+
"exclude": ["node_modules", "dist/**/*"]
26+
}

pnpm-lock.yaml

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

pnpm-workspace.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ packages:
1919
- 'templates/chat-react-ts/spacetimedb'
2020
- 'modules/sdk-test-connect-disconnect-ts'
2121
- 'modules/sdk-test-procedure-ts'
22+
- 'modules/sdk-test-procedural-view-pk-ts'
2223
- 'modules/sdk-test-ts'
2324
- 'modules/sdk-test-case-conversion-ts'
2425
- 'docs'

sdks/rust/tests/procedural-view-pk-client/src/test_handlers.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,9 @@ async fn exec_view_pk_right_semijoin(db_name: &str) {
215215

216216
pub async fn dispatch(test: &str, db_name: &str) {
217217
match test {
218-
"sender-procedural-view-pk-updates-are-scoped" => exec_sender_scoped_pk_view(db_name).await,
219-
"procedural-view-pk-left-semijoin-query-builder" => exec_view_pk_left_semijoin(db_name).await,
220-
"procedural-view-pk-right-semijoin-query-builder" => exec_view_pk_right_semijoin(db_name).await,
218+
"sender-scoped-pk-view" => exec_sender_scoped_pk_view(db_name).await,
219+
"view-pk-left-semijoin" => exec_view_pk_left_semijoin(db_name).await,
220+
"view-pk-right-semijoin" => exec_view_pk_right_semijoin(db_name).await,
221221
_ => panic!("Unknown test: {test}"),
222222
}
223223
}

sdks/rust/tests/test.rs

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -769,33 +769,40 @@ macro_rules! view_pk_tests {
769769
view_pk_tests!(rust_view_pk, "");
770770
view_pk_tests!(csharp_view_pk, "-cs");
771771

772-
mod rust_procedural_view_pk {
773-
use spacetimedb_testing::sdk::Test;
772+
macro_rules! procedural_view_pk_tests {
773+
($mod_name:ident, $module:literal) => {
774+
mod $mod_name {
775+
use spacetimedb_testing::sdk::Test;
774776

775-
const MODULE: &str = "sdk-test-procedural-view-pk";
776-
const CLIENT: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/procedural-view-pk-client");
777+
const MODULE: &str = $module;
778+
const CLIENT: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/procedural-view-pk-client");
777779

778-
fn make_test(subcommand: &str) -> Test {
779-
super::platform_test_builder(CLIENT, Some(subcommand))
780-
.with_name(subcommand)
781-
.with_module(MODULE)
782-
.with_language("rust")
783-
.with_bindings_dir("src/module_bindings")
784-
.build()
785-
}
780+
fn make_test(subcommand: &str) -> Test {
781+
super::platform_test_builder(CLIENT, Some(subcommand))
782+
.with_name(subcommand)
783+
.with_module(MODULE)
784+
.with_language("rust")
785+
.with_bindings_dir("src/module_bindings")
786+
.build()
787+
}
786788

787-
#[test]
788-
fn sender_procedural_view_with_pk_scopes_updates_by_sender() {
789-
make_test("sender-procedural-view-pk-updates-are-scoped").run()
790-
}
789+
#[test]
790+
fn sender_scoped_procedural_pk_view() {
791+
make_test("sender-scoped-pk-view").run()
792+
}
791793

792-
#[test]
793-
fn procedural_view_pk_left_semijoin_query_builder() {
794-
make_test("procedural-view-pk-left-semijoin-query-builder").run()
795-
}
794+
#[test]
795+
fn procedural_view_pk_left_semijoin() {
796+
make_test("view-pk-left-semijoin").run()
797+
}
796798

797-
#[test]
798-
fn procedural_view_pk_right_semijoin_query_builder() {
799-
make_test("procedural-view-pk-right-semijoin-query-builder").run()
800-
}
799+
#[test]
800+
fn procedural_view_pk_right_semijoin() {
801+
make_test("view-pk-right-semijoin").run()
802+
}
803+
}
804+
};
801805
}
806+
807+
procedural_view_pk_tests!(rust_procedural_view_pk, "sdk-test-procedural-view-pk");
808+
procedural_view_pk_tests!(typescript_procedural_view_pk, "sdk-test-procedural-view-pk-ts");

0 commit comments

Comments
 (0)