|
| 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 | +); |
0 commit comments