View Javadoc
1   package com.github.davidmoten.rx.jdbc;
2   
3   import java.util.List;
4   
5   import rx.Observable;
6   import rx.Scheduler;
7   
8   /**
9    * A database DML query, either update/insert or select.
10   */
11  public interface Query {
12  
13      /**
14       * Returns the sql statement for this query following JDBC format (? for
15       * parameters for instance).
16       * 
17       * @return jdbc sql
18       */
19      String sql();
20  
21      /**
22       * Returns the list of names corresponding positionally to the ? characters in
23       * the sql. If names were not used then returns an empty list.
24       * 
25       * @return ist of names corresponding positionally to the ? characters in
26       *         the sql
27       */
28      List<String> names();
29  
30      /**
31       * Returns the parameters for the query in order of appearance as ? markers
32       * in the sql. May emit more than the number of parameters in one run of the
33       * query in which case the query would be run multiple times.
34       * 
35       * @return
36       */
37      Observable<Parameter> parameters();
38  
39      /**
40       * Returns the Observables that have to complete before this query is
41       * started.
42       * 
43       * @return
44       */
45      Observable<?> depends();
46  
47      /**
48       * Returns the query context including {@link ConnectionProvider} and
49       * {@link Scheduler}.
50       * 
51       * @return
52       */
53      QueryContext context();
54  
55  }