1717
1818package io .vertx .sqlclient .impl ;
1919
20+ import io .vertx .core .Future ;
2021import io .vertx .core .Promise ;
2122import io .vertx .sqlclient .Row ;
2223import io .vertx .sqlclient .SqlResult ;
2324import io .vertx .sqlclient .Tuple ;
25+ import io .vertx .sqlclient .impl .command .BiCommand ;
2426import io .vertx .sqlclient .impl .command .CommandScheduler ;
2527import io .vertx .sqlclient .impl .command .ExtendedBatchQueryCommand ;
2628import io .vertx .sqlclient .impl .command .ExtendedQueryCommand ;
29+ import io .vertx .sqlclient .impl .command .PrepareStatementCommand ;
2730import io .vertx .sqlclient .impl .command .SimpleQueryCommand ;
2831
2932import java .util .List ;
@@ -44,27 +47,28 @@ public SqlResultBuilder(Function<T, R> factory,
4447 this .collector = collector ;
4548 }
4649
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 );
4952 }
5053
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 );
5861 }
5962
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 );
6872 String msg = preparedStatement .prepare ((TupleInternal ) args );
6973 if (msg != null ) {
7074 handler .fail (msg );
@@ -83,10 +87,22 @@ SqlResultHandler<T, R, L> execute(CommandScheduler scheduler,
8387 return handler ;
8488 }
8589
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 ) {
90106 return new ExtendedQueryCommand <>(
91107 preparedStatement ,
92108 args ,
@@ -95,12 +111,12 @@ ExtendedQueryCommand<T> createCommand(PreparedStatement preparedStatement,
95111 handler );
96112 }
97113
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 );
104120 for (Tuple args : argsList ) {
105121 String msg = preparedStatement .prepare ((TupleInternal )args );
106122 if (msg != null ) {
@@ -112,10 +128,23 @@ void executeBatch(CommandScheduler scheduler,
112128 scheduler .schedule (cmd , handler );
113129 }
114130
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 );
120143 }
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