@@ -454,25 +454,14 @@ final class RunQuery extends Request {
454
454
});
455
455
456
456
factory RunQuery .deserialize (JSObject object) {
457
- final rawParameters =
458
- (object[_UniqueFieldNames .parameters] as JSArray ).toDart;
459
- final typeVector = switch (object[_UniqueFieldNames .typeVector]) {
460
- final types? => (types as JSArrayBuffer ).toDart.asUint8List (),
461
- null => null ,
462
- };
463
-
464
- final parameters = List <Object ?>.filled (rawParameters.length, null );
465
- for (var i = 0 ; i < parameters.length; i++ ) {
466
- final typeCode =
467
- typeVector != null ? TypeCode .of (typeVector[i]) : TypeCode .unknown;
468
- parameters[i] = typeCode.decodeColumn (rawParameters[i]);
469
- }
470
-
471
457
return RunQuery (
472
458
requestId: object.requestId,
473
459
databaseId: object.databaseId,
474
460
sql: (object[_UniqueFieldNames .sql] as JSString ).toDart,
475
- parameters: parameters,
461
+ parameters: TypeCode .decodeValues (
462
+ object[_UniqueFieldNames .parameters] as JSArray ,
463
+ object[_UniqueFieldNames .typeVector] as JSArrayBuffer ? ,
464
+ ),
476
465
returnRows: (object[_UniqueFieldNames .returnRows] as JSBoolean ).toDart,
477
466
);
478
467
}
@@ -487,19 +476,11 @@ final class RunQuery extends Request {
487
476
object[_UniqueFieldNames .returnRows] = returnRows.toJS;
488
477
489
478
if (parameters.isNotEmpty) {
490
- final jsParams = < JSAny ? > [];
491
- final typeCodes = Uint8List (parameters.length);
492
- for (var i = 0 ; i < parameters.length; i++ ) {
493
- final (code, jsParam) = TypeCode .encodeValue (parameters[i]);
494
- typeCodes[i] = code.index;
495
- jsParams.add (jsParam);
496
- }
497
-
498
- final jsTypes = typeCodes.buffer.toJS;
499
- transferred.add (jsTypes);
479
+ final (array, types) = TypeCode .encodeValues (parameters);
500
480
501
- object[_UniqueFieldNames .parameters] = jsParams.toJS;
502
- object[_UniqueFieldNames .typeVector] = jsTypes;
481
+ object[_UniqueFieldNames .parameters] = array;
482
+ object[_UniqueFieldNames .typeVector] = types;
483
+ transferred.add (types);
503
484
} else {
504
485
object[_UniqueFieldNames .parameters] = JSArray ();
505
486
}
@@ -660,6 +641,33 @@ enum TypeCode {
660
641
661
642
return (code, value);
662
643
}
644
+
645
+ static (JSArray , JSArrayBuffer ) encodeValues (List <Object ?> values) {
646
+ final jsParams = < JSAny ? > [];
647
+ final typeCodes = Uint8List (values.length);
648
+ for (var i = 0 ; i < values.length; i++ ) {
649
+ final (code, jsParam) = TypeCode .encodeValue (values[i]);
650
+ typeCodes[i] = code.index;
651
+ jsParams.add (jsParam);
652
+ }
653
+
654
+ final jsTypes = typeCodes.buffer.toJS;
655
+ return (jsParams.toJS, jsTypes);
656
+ }
657
+
658
+ static List <Object ?> decodeValues (JSArray array, JSArrayBuffer ? types) {
659
+ final rawParameters = array.toDart;
660
+ final typeVector = types? .toDart.asUint8List ();
661
+
662
+ final parameters = List <Object ?>.filled (rawParameters.length, null );
663
+ for (var i = 0 ; i < parameters.length; i++ ) {
664
+ final typeCode =
665
+ typeVector != null ? TypeCode .of (typeVector[i]) : TypeCode .unknown;
666
+ parameters[i] = typeCode.decodeColumn (rawParameters[i]);
667
+ }
668
+
669
+ return parameters;
670
+ }
663
671
}
664
672
665
673
final class RowsResponse extends Response {
0 commit comments