@@ -8,12 +8,35 @@ import 'package:sqlite3_web/protocol_utils.dart' as proto;
88enum CustomDatabaseMessageKind {
99 ok,
1010 getAutoCommit,
11- executeBatchInTransaction ,
11+ executeBatch ,
1212 updateSubscriptionManagement,
1313 notifyUpdates,
1414}
1515
16- extension type CustomDatabaseMessage ._raw (JSObject _) implements JSObject {
16+ extension type BaseCustomDatabaseMessage ._raw (JSObject _) implements JSObject {
17+ external JSString get rawKind;
18+
19+ external factory BaseCustomDatabaseMessage ({required JSString rawKind});
20+
21+ factory BaseCustomDatabaseMessage .getAutoCommit () {
22+ return BaseCustomDatabaseMessage (
23+ rawKind: CustomDatabaseMessageKind .getAutoCommit.name.toJS,
24+ );
25+ }
26+
27+ factory BaseCustomDatabaseMessage .okResponse () {
28+ return BaseCustomDatabaseMessage (
29+ rawKind: CustomDatabaseMessageKind .ok.name.toJS,
30+ );
31+ }
32+
33+ CustomDatabaseMessageKind get kind {
34+ return CustomDatabaseMessageKind .values.byName (rawKind.toDart);
35+ }
36+ }
37+
38+ extension type CustomDatabaseMessage ._raw (JSObject _)
39+ implements BaseCustomDatabaseMessage {
1740 external factory CustomDatabaseMessage ._({
1841 required JSString rawKind,
1942 JSString rawSql,
@@ -38,16 +61,55 @@ extension type CustomDatabaseMessage._raw(JSObject _) implements JSObject {
3861 );
3962 }
4063
41- external JSString get rawKind;
42-
4364 external JSString get rawSql;
4465
4566 external JSArray get rawParameters;
4667
4768 /// Not set in earlier versions of this package.
4869 external JSArrayBuffer ? get typeInfo;
70+ }
4971
50- CustomDatabaseMessageKind get kind {
51- return CustomDatabaseMessageKind .values.byName (rawKind.toDart);
72+ extension type RunBatchRequest ._raw (JSObject _)
73+ implements BaseCustomDatabaseMessage {
74+ external factory RunBatchRequest ._({
75+ required JSString rawKind,
76+ required JSString rawSql,
77+ required JSArray <BatchParameters > parameters,
78+ required JSBoolean requireTransaction,
79+ });
80+
81+ factory RunBatchRequest ({
82+ required String sql,
83+ required List <List <Object ?>> parameters,
84+ required bool requireTransaction,
85+ }) {
86+ return RunBatchRequest ._(
87+ rawKind: CustomDatabaseMessageKind .executeBatch.name.toJS,
88+ rawSql: sql.toJS,
89+ parameters: parameters.map (BatchParameters .new ).toList ().toJS,
90+ requireTransaction: requireTransaction.toJS,
91+ );
92+ }
93+
94+ external JSString get rawSql;
95+ external JSArray <BatchParameters > get parameters;
96+ external JSBoolean get requireTransaction;
97+ }
98+
99+ extension type BatchParameters ._raw (JSObject _) implements JSObject {
100+ external JSArray get parameters;
101+ external JSArrayBuffer get parameterTypes;
102+
103+ external factory BatchParameters ._({
104+ required JSArray parameters,
105+ required JSArrayBuffer parameterTypes,
106+ });
107+
108+ factory BatchParameters (List <Object ?> parameters) {
109+ final (params, types) = proto.serializeParameters (parameters);
110+ return BatchParameters ._(parameters: params, parameterTypes: types);
52111 }
112+
113+ List <Object ?> get decodedParameters =>
114+ proto.deserializeParameters (parameters, parameterTypes);
53115}
0 commit comments