17
17
18
18
package io .vertx .sqlclient .impl ;
19
19
20
+ import io .vertx .core .Future ;
20
21
import io .vertx .core .Promise ;
21
22
import io .vertx .sqlclient .Row ;
22
23
import io .vertx .sqlclient .SqlResult ;
23
24
import io .vertx .sqlclient .Tuple ;
25
+ import io .vertx .sqlclient .impl .command .BiCommand ;
24
26
import io .vertx .sqlclient .impl .command .CommandScheduler ;
25
27
import io .vertx .sqlclient .impl .command .ExtendedBatchQueryCommand ;
26
28
import io .vertx .sqlclient .impl .command .ExtendedQueryCommand ;
29
+ import io .vertx .sqlclient .impl .command .PrepareStatementCommand ;
27
30
import io .vertx .sqlclient .impl .command .SimpleQueryCommand ;
28
31
29
32
import java .util .List ;
@@ -44,27 +47,28 @@ public SqlResultBuilder(Function<T, R> factory,
44
47
this .collector = collector ;
45
48
}
46
49
47
- SqlResultHandler <T , R , L > createHandler (Promise <L > resultHandler ) {
48
- return new SqlResultHandler <>(factory , resultHandler );
50
+ private SqlResultHandler <T , R , L > createHandler (Promise <L > promise ) {
51
+ return new SqlResultHandler <>(factory , promise );
49
52
}
50
53
51
- void execute (CommandScheduler scheduler ,
52
- String sql ,
53
- boolean autoCommit ,
54
- boolean singleton ,
55
- SqlResultHandler < T , R , L > handler ) {
56
- SimpleQueryCommand < T > cmd = new SimpleQueryCommand <>( sql , singleton , autoCommit , collector , handler );
57
- scheduler .schedule (cmd , handler );
54
+ void executeSimpleQuery (CommandScheduler scheduler ,
55
+ String sql ,
56
+ boolean autoCommit ,
57
+ boolean singleton ,
58
+ Promise < L > promise ) {
59
+ SqlResultHandler handler = createHandler ( promise );
60
+ scheduler .schedule (new SimpleQueryCommand <>( sql , singleton , autoCommit , collector , handler ) , handler );
58
61
}
59
62
60
- SqlResultHandler <T , R , L > execute (CommandScheduler scheduler ,
61
- PreparedStatement preparedStatement ,
62
- boolean autoCommit ,
63
- Tuple args ,
64
- int fetch ,
65
- String cursorId ,
66
- boolean suspended ,
67
- SqlResultHandler <T , R , L > handler ) {
63
+ SqlResultHandler <T , R , L > executeExtendedQuery (CommandScheduler scheduler ,
64
+ PreparedStatement preparedStatement ,
65
+ boolean autoCommit ,
66
+ Tuple args ,
67
+ int fetch ,
68
+ String cursorId ,
69
+ boolean suspended ,
70
+ Promise <L > promise ) {
71
+ SqlResultHandler handler = createHandler (promise );
68
72
String msg = preparedStatement .prepare ((TupleInternal ) args );
69
73
if (msg != null ) {
70
74
handler .fail (msg );
@@ -83,10 +87,22 @@ SqlResultHandler<T, R, L> execute(CommandScheduler scheduler,
83
87
return handler ;
84
88
}
85
89
86
- ExtendedQueryCommand <T > createCommand (PreparedStatement preparedStatement ,
87
- boolean autoCommit ,
88
- Tuple args ,
89
- SqlResultHandler <T , R , L > handler ) {
90
+ void executeExtendedQuery (CommandScheduler scheduler , String sql , boolean autoCommit , Tuple arguments , Promise <L > promise ) {
91
+ SqlResultHandler handler = this .createHandler (promise );
92
+ BiCommand <PreparedStatement , Boolean > cmd = new BiCommand <>(new PrepareStatementCommand (sql , true ), ps -> {
93
+ String msg = ps .prepare ((TupleInternal ) arguments );
94
+ if (msg != null ) {
95
+ return Future .failedFuture (msg );
96
+ }
97
+ return Future .succeededFuture (createExtendedQueryCommand (ps , autoCommit , arguments , handler ));
98
+ });
99
+ scheduler .schedule (cmd , handler );
100
+ }
101
+
102
+ private ExtendedQueryCommand <T > createExtendedQueryCommand (PreparedStatement preparedStatement ,
103
+ boolean autoCommit ,
104
+ Tuple args ,
105
+ SqlResultHandler <T , R , L > handler ) {
90
106
return new ExtendedQueryCommand <>(
91
107
preparedStatement ,
92
108
args ,
@@ -95,12 +111,12 @@ ExtendedQueryCommand<T> createCommand(PreparedStatement preparedStatement,
95
111
handler );
96
112
}
97
113
98
-
99
- void executeBatch ( CommandScheduler scheduler ,
100
- PreparedStatement preparedStatement ,
101
- boolean autoCommit ,
102
- List < Tuple > argsList ,
103
- SqlResultHandler < T , R , L > handler ) {
114
+ void executeBatchQuery ( CommandScheduler scheduler ,
115
+ PreparedStatement preparedStatement ,
116
+ boolean autoCommit ,
117
+ List < Tuple > argsList ,
118
+ Promise < L > promise ) {
119
+ SqlResultHandler handler = createHandler ( promise );
104
120
for (Tuple args : argsList ) {
105
121
String msg = preparedStatement .prepare ((TupleInternal )args );
106
122
if (msg != null ) {
@@ -112,10 +128,23 @@ void executeBatch(CommandScheduler scheduler,
112
128
scheduler .schedule (cmd , handler );
113
129
}
114
130
115
- ExtendedBatchQueryCommand <T > createBatchCommand (PreparedStatement preparedStatement ,
116
- boolean autoCommit ,
117
- List <Tuple > argsList ,
118
- SqlResultHandler <T , R , L > handler ) {
119
- return new ExtendedBatchQueryCommand <>(preparedStatement , argsList , autoCommit , collector , handler );
131
+ void executeBatchQuery (CommandScheduler scheduler , String sql , boolean autoCommit , List <Tuple > batch , Promise <L > promise ) {
132
+ SqlResultHandler handler = this .createHandler (promise );
133
+ BiCommand <PreparedStatement , Boolean > cmd = new BiCommand <>(new PrepareStatementCommand (sql , true ), ps -> {
134
+ for (Tuple args : batch ) {
135
+ String msg = ps .prepare ((TupleInternal ) args );
136
+ if (msg != null ) {
137
+ return Future .failedFuture (msg );
138
+ }
139
+ }
140
+ return Future .succeededFuture (createBatchQueryCommand (ps , autoCommit , batch , handler ));
141
+ });
142
+ scheduler .schedule (cmd , handler );
120
143
}
121
- }
144
+
145
+ private ExtendedBatchQueryCommand <T > createBatchQueryCommand (PreparedStatement preparedStatement ,
146
+ boolean autoCommit ,
147
+ List <Tuple > argsList ,
148
+ SqlResultHandler <T , R , L > handler ) {
149
+ return new ExtendedBatchQueryCommand <>(preparedStatement , argsList , autoCommit , collector , handler );
150
+ }}
0 commit comments