decode static method

OneOffQueryResponse decode(
  1. BsatnDecoder decoder
)

Implementation

static OneOffQueryResponse decode(BsatnDecoder decoder) {
  final messageIdLength = decoder.readU32();
  final messageId = decoder.readBytes(messageIdLength);

  // error is Option<String>
  // DISCOVERED: SpacetimeDB uses INVERTED Option encoding: 0x00 = Some, 0x01 = None
  // This is opposite of Rust's standard Option discriminant
  final errorTag = decoder.readU8();
  final error = (errorTag == 0) ? decoder.readString() : null;

  // tables is Vec<OneOffTable>
  final tables = decoder.readList(() => OneOffTable.decode(decoder));

  final duration = decoder.readU64();

  return OneOffQueryResponse(
    messageId: messageId,
    requestId: 0, // Not in wire format, using placeholder
    error: error,
    tables: tables,
    totalHostExecutionDurationMicros: duration,
  );
}