1
1
package org .tarantool ;
2
2
3
- import static org .tarantool .RequestArguments .cacheLookupValue ;
4
- import static org .tarantool .RequestArguments .value ;
5
-
3
+ import static org .tarantool .dsl .Requests .callRequest ;
4
+ import static org .tarantool .dsl .Requests .deleteRequest ;
5
+ import static org .tarantool .dsl .Requests .evalRequest ;
6
+ import static org .tarantool .dsl .Requests .insertRequest ;
7
+ import static org .tarantool .dsl .Requests .pingRequest ;
8
+ import static org .tarantool .dsl .Requests .replaceRequest ;
9
+ import static org .tarantool .dsl .Requests .selectRequest ;
10
+ import static org .tarantool .dsl .Requests .updateRequest ;
11
+ import static org .tarantool .dsl .Requests .upsertRequest ;
12
+
13
+ import org .tarantool .dsl .Operation ;
14
+ import org .tarantool .dsl .TarantoolRequestConvertible ;
6
15
import org .tarantool .schema .TarantoolSchemaMeta ;
7
16
17
+ import java .util .Arrays ;
8
18
import java .util .List ;
9
19
10
20
public abstract class AbstractTarantoolOps <Result >
@@ -17,188 +27,132 @@ public abstract class AbstractTarantoolOps<Result>
17
27
protected abstract TarantoolSchemaMeta getSchemaMeta ();
18
28
19
29
public Result select (Integer space , Integer index , List <?> key , int offset , int limit , Iterator iterator ) {
20
- return select (space , index , key , offset , limit , iterator .getValue ());
30
+ return execute (
31
+ selectRequest (space , index )
32
+ .key (key )
33
+ .offset (offset ).limit (limit )
34
+ .iterator (iterator )
35
+ );
21
36
}
22
37
23
38
@ Override
24
39
public Result select (String space , String index , List <?> key , int offset , int limit , Iterator iterator ) {
25
- return select (space , index , key , offset , limit , iterator .getValue ());
40
+ return execute (
41
+ selectRequest (space , index )
42
+ .key (key )
43
+ .offset (offset ).limit (limit )
44
+ .iterator (iterator )
45
+ );
26
46
}
27
47
28
48
@ Override
29
49
public Result select (Integer space , Integer index , List <?> key , int offset , int limit , int iterator ) {
30
- return exec (
31
- new TarantoolRequest (
32
- Code .SELECT ,
33
- value (Key .SPACE ), value (space ),
34
- value (Key .INDEX ), value (index ),
35
- value (Key .KEY ), value (key ),
36
- value (Key .ITERATOR ), value (iterator ),
37
- value (Key .LIMIT ), value (limit ),
38
- value (Key .OFFSET ), value (offset )
39
- )
50
+ return execute (
51
+ selectRequest (space , index )
52
+ .key (key )
53
+ .offset (offset ).limit (limit )
54
+ .iterator (iterator )
40
55
);
41
56
}
42
57
43
58
@ Override
44
59
public Result select (String space , String index , List <?> key , int offset , int limit , int iterator ) {
45
- return exec (
46
- new TarantoolRequest (
47
- Code .SELECT ,
48
- value (Key .SPACE ), cacheLookupValue (() -> getSchemaMeta ().getSpace (space ).getId ()),
49
- value (Key .INDEX ), cacheLookupValue (() -> getSchemaMeta ().getSpaceIndex (space , index ).getId ()),
50
- value (Key .KEY ), value (key ),
51
- value (Key .ITERATOR ), value (iterator ),
52
- value (Key .LIMIT ), value (limit ),
53
- value (Key .OFFSET ), value (offset )
54
- )
60
+ return execute (
61
+ selectRequest (space , index )
62
+ .key (key )
63
+ .offset (offset ).limit (limit )
64
+ .iterator (iterator )
55
65
);
56
66
}
57
67
58
68
@ Override
59
69
public Result insert (Integer space , List <?> tuple ) {
60
- return exec (new TarantoolRequest (
61
- Code .INSERT ,
62
- value (Key .SPACE ), value (space ),
63
- value (Key .TUPLE ), value (tuple )
64
- )
65
- );
70
+ return execute (insertRequest (space , tuple ));
66
71
}
67
72
68
73
@ Override
69
74
public Result insert (String space , List <?> tuple ) {
70
- return exec (
71
- new TarantoolRequest (
72
- Code .INSERT ,
73
- value (Key .SPACE ), cacheLookupValue (() -> getSchemaMeta ().getSpace (space ).getId ()),
74
- value (Key .TUPLE ), value (tuple )
75
- )
76
- );
75
+ return execute (insertRequest (space , tuple ));
77
76
}
78
77
79
78
@ Override
80
79
public Result replace (Integer space , List <?> tuple ) {
81
- return exec (
82
- new TarantoolRequest (
83
- Code .REPLACE ,
84
- value (Key .SPACE ), value (space ),
85
- value (Key .TUPLE ), value (tuple )
86
- )
87
- );
80
+ return execute (replaceRequest (space , tuple ));
88
81
}
89
82
90
83
@ Override
91
84
public Result replace (String space , List <?> tuple ) {
92
- return exec (
93
- new TarantoolRequest (
94
- Code .REPLACE ,
95
- value (Key .SPACE ), cacheLookupValue (() -> getSchemaMeta ().getSpace (space ).getId ()),
96
- value (Key .TUPLE ), value (tuple )
97
- )
98
- );
85
+ return execute (replaceRequest (space , tuple ));
99
86
}
100
87
101
88
@ Override
102
89
public Result update (Integer space , List <?> key , Object ... operations ) {
103
- return exec (
104
- new TarantoolRequest (
105
- Code .UPDATE ,
106
- value (Key .SPACE ), value (space ),
107
- value (Key .KEY ), value (key ),
108
- value (Key .TUPLE ), value (operations )
109
- )
110
- );
90
+ Operation [] ops = Arrays .stream (operations )
91
+ .map (Operation ::fromArray )
92
+ .toArray (org .tarantool .dsl .Operation []::new );
93
+ return execute (updateRequest (space , key , ops ));
111
94
}
112
95
113
96
@ Override
114
97
public Result update (String space , List <?> key , Object ... operations ) {
115
- return exec (
116
- new TarantoolRequest (
117
- Code .UPDATE ,
118
- value (Key .SPACE ), cacheLookupValue (() -> getSchemaMeta ().getSpace (space ).getId ()),
119
- value (Key .KEY ), value (key ),
120
- value (Key .TUPLE ), value (operations )
121
- )
122
- );
98
+ Operation [] ops = Arrays .stream (operations )
99
+ .map (Operation ::fromArray )
100
+ .toArray (org .tarantool .dsl .Operation []::new );
101
+ return execute (updateRequest (space , key , ops ));
123
102
}
124
103
125
104
@ Override
126
105
public Result upsert (Integer space , List <?> key , List <?> defTuple , Object ... operations ) {
127
- return exec (
128
- new TarantoolRequest (
129
- Code .UPSERT ,
130
- value (Key .SPACE ), value (space ),
131
- value (Key .KEY ), value (key ),
132
- value (Key .TUPLE ), value (defTuple ),
133
- value (Key .UPSERT_OPS ), value (operations )
134
- )
135
- );
106
+ Operation [] ops = Arrays .stream (operations )
107
+ .map (Operation ::fromArray )
108
+ .toArray (Operation []::new );
109
+ return execute (upsertRequest (space , key , defTuple , ops ));
136
110
}
137
111
138
112
@ Override
139
113
public Result upsert (String space , List <?> key , List <?> defTuple , Object ... operations ) {
140
- return exec (
141
- new TarantoolRequest (
142
- Code .UPSERT ,
143
- value (Key .SPACE ), cacheLookupValue (() -> getSchemaMeta ().getSpace (space ).getId ()),
144
- value (Key .KEY ), value (key ),
145
- value (Key .TUPLE ), value (defTuple ),
146
- value (Key .UPSERT_OPS ), value (operations )
147
- )
148
- );
114
+ Operation [] ops = Arrays .stream (operations )
115
+ .map (Operation ::fromArray )
116
+ .toArray (Operation []::new );
117
+ return execute (upsertRequest (space , key , defTuple , ops ));
149
118
}
150
119
151
120
@ Override
152
121
public Result delete (Integer space , List <?> key ) {
153
- return exec (
154
- new TarantoolRequest (
155
- Code .DELETE ,
156
- value (Key .SPACE ), value (space ),
157
- value (Key .KEY ), value (key )
158
- )
159
- );
122
+ return execute (deleteRequest (space , key ));
160
123
}
161
124
162
125
@ Override
163
126
public Result delete (String space , List <?> key ) {
164
- return exec (
165
- new TarantoolRequest (
166
- Code .DELETE ,
167
- value (Key .SPACE ), cacheLookupValue (() -> getSchemaMeta ().getSpace (space ).getId ()),
168
- value (Key .KEY ), value (key )
169
- )
170
- );
127
+ return execute (deleteRequest (space , key ));
171
128
}
172
129
173
130
@ Override
174
131
public Result call (String function , Object ... args ) {
175
- return exec (
176
- new TarantoolRequest (
177
- callCode ,
178
- value (Key .FUNCTION ), value (function ),
179
- value (Key .TUPLE ), value (args )
180
- )
132
+ return execute (
133
+ callRequest (function )
134
+ .arguments (args )
135
+ .useCall16 (callCode == Code .OLD_CALL )
181
136
);
182
137
}
183
138
184
139
@ Override
185
140
public Result eval (String expression , Object ... args ) {
186
- return exec (
187
- new TarantoolRequest (
188
- Code .EVAL ,
189
- value (Key .EXPRESSION ), value (expression ),
190
- value (Key .TUPLE ), value (args )
191
- )
192
- );
141
+ return execute (evalRequest (expression ).arguments (args ));
193
142
}
194
143
195
144
@ Override
196
145
public void ping () {
197
- exec (new TarantoolRequest (Code .PING ));
146
+ execute (pingRequest ());
147
+ }
148
+
149
+ @ Override
150
+ public Result execute (TarantoolRequestConvertible requestSpec ) {
151
+ return exec (requestSpec .toTarantoolRequest (getSchemaMeta ()));
198
152
}
199
153
200
154
public void setCallCode (Code callCode ) {
201
155
this .callCode = callCode ;
202
156
}
203
157
204
- }
158
+ }
0 commit comments