Skip to content

Commit 83f1b08

Browse files
committed
Fix integrateGeneratedColumns
1 parent d926f74 commit 83f1b08

1 file changed

Lines changed: 29 additions & 5 deletions

File tree

crates/bindings-typescript/src/server/runtime.ts

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,30 @@ function makeTableView(
312312
const sequences = table.sequences.map(seq => {
313313
const col = rowType.value.elements[seq.column];
314314
const colType = col.algebraicType;
315+
let sequenceTrigger: any;
316+
switch (colType.tag) {
317+
case 'U8':
318+
case 'I8':
319+
case 'U16':
320+
case 'I16':
321+
case 'U32':
322+
case 'I32':
323+
sequenceTrigger = 0;
324+
break;
325+
case 'U64':
326+
case 'I64':
327+
case 'U128':
328+
case 'I128':
329+
case 'U256':
330+
case 'I256':
331+
sequenceTrigger = 0n;
332+
break;
333+
default:
334+
throw new TypeError('invalid sequence type');
335+
}
315336
return {
316337
colName: col.name!,
338+
sequenceTrigger,
317339
read: (reader: BinaryReader) =>
318340
AlgebraicType.deserializeValue(reader, colType, typespace),
319341
};
@@ -323,11 +345,13 @@ function makeTableView(
323345
const iter = () =>
324346
new TableIterator(sys.datastore_table_scan_bsatn(table_id), rowType);
325347

326-
const integrate_generated_columns = hasAutoIncrement
348+
const integrateGeneratedColumns = hasAutoIncrement
327349
? (row: RowType<any>, ret_buf: Uint8Array) => {
328350
const reader = new BinaryReader(ret_buf);
329-
for (const { colName, read } of sequences) {
330-
row[colName] = read(reader);
351+
for (const { colName, read, sequenceTrigger } of sequences) {
352+
if (row[colName] === sequenceTrigger) {
353+
row[colName] = read(reader);
354+
}
331355
}
332356
}
333357
: null;
@@ -341,7 +365,7 @@ function makeTableView(
341365
AlgebraicType.serializeValue(writer, rowType, row, typespace);
342366
const ret_buf = sys.datastore_insert_bsatn(table_id, writer.getBuffer());
343367
const ret = { ...row };
344-
integrate_generated_columns?.(ret, ret_buf);
368+
integrateGeneratedColumns?.(ret, ret_buf);
345369

346370
return ret;
347371
},
@@ -465,7 +489,7 @@ function makeTableView(
465489
index_id,
466490
writer.getBuffer()
467491
);
468-
integrate_generated_columns?.(row, ret_buf);
492+
integrateGeneratedColumns?.(row, ret_buf);
469493
return row;
470494
},
471495
} as UniqueIndex<any, any>;

0 commit comments

Comments
 (0)