33// ─────────────────────────────────────────────────────────────────────────────
44import {
55 errors ,
6+ ScheduleAt ,
67 schema ,
78 t ,
89 table ,
@@ -25,7 +26,30 @@ const MyTable = table(
2526 { field : ReturnStruct }
2627) ;
2728
28- const spacetimedb = schema ( MyTable ) ;
29+ const ScheduledProcTable = t . row ( {
30+ scheduled_id : t . u64 ( ) . primaryKey ( ) . autoInc ( ) ,
31+ scheduled_at : t . scheduleAt ( ) ,
32+ reducer_ts : t . timestamp ( ) ,
33+ x : t . u8 ( ) ,
34+ y : t . u8 ( ) ,
35+ } ) ;
36+ const ScheduledProcTableTable = table (
37+ { name : 'scheduled_proc_table' , scheduled : 'scheduled_proc' } ,
38+ ScheduledProcTable
39+ ) ;
40+
41+ const ProcInsertsInto = t . row ( {
42+ reducer_ts : t . timestamp ( ) ,
43+ procedure_ts : t . timestamp ( ) ,
44+ x : t . u8 ( ) ,
45+ y : t . u8 ( ) ,
46+ } ) ;
47+ const ProcInsertsIntoTable = table (
48+ { name : 'proc_inserts_into' , public : true } ,
49+ ProcInsertsInto
50+ ) ;
51+
52+ const spacetimedb = schema ( MyTable , ScheduledProcTableTable , ProcInsertsIntoTable ) ;
2953
3054spacetimedb . procedure (
3155 'return_primitive' ,
@@ -119,3 +143,29 @@ spacetimedb.procedure('insert_with_tx_rollback', t.unit(), ctx => {
119143 assertRowCount ( ctx , 0 ) ;
120144 return { } ;
121145} ) ;
146+
147+ spacetimedb . reducer ( 'schedule_proc' , { } , ctx => {
148+ ctx . db . scheduled_proc_table . insert ( {
149+ scheduled_id : 0n ,
150+ scheduled_at : ScheduleAt . interval ( 1000000n ) ,
151+ reducer_ts : ctx . timestamp ,
152+ x : 42 ,
153+ y : 24 ,
154+ } )
155+ } ) ;
156+
157+ spacetimedb . procedure ( 'scheduled_proc' , { data : ScheduledProcTable } , t . unit ( ) , ( ctx , { data } ) => {
158+ const reducer_ts = data . reducer_ts ;
159+ const x = data . x ;
160+ const y = data . y ;
161+ const procedure_ts = ctx . timestamp ;
162+ ctx . withTx ( ctx => {
163+ ctx . db . proc_inserts_into . insert ( {
164+ reducer_ts,
165+ procedure_ts,
166+ x,
167+ y
168+ } ) ;
169+ } ) ;
170+ return { } ;
171+ } ) ;
0 commit comments