17
17
package com.ctrip.sqllin.dsl
18
18
19
19
import com.ctrip.sqllin.driver.DatabaseConnection
20
+ import com.ctrip.sqllin.dsl.annotation.StatementDslMaker
20
21
import com.ctrip.sqllin.dsl.sql.Table
21
22
import com.ctrip.sqllin.dsl.sql.X
22
23
import com.ctrip.sqllin.dsl.sql.clause.*
@@ -98,18 +99,21 @@ public class DatabaseScope internal constructor(
98
99
* Insert.
99
100
*/
100
101
102
+ @StatementDslMaker
101
103
public infix fun <T > Table<T>.INSERT (entities : Iterable <T >) {
102
104
val statement = Insert .insert(this , databaseConnection, entities)
103
105
addStatement(statement)
104
106
}
105
107
108
+ @StatementDslMaker
106
109
public infix fun <T > Table<T>.INSERT (entity : T ): Unit =
107
110
INSERT (listOf (entity))
108
111
109
112
/* *
110
113
* Update.
111
114
*/
112
115
116
+ @StatementDslMaker
113
117
public infix fun <T > Table<T>.UPDATE (clause : SetClause <T >): UpdateStatementWithoutWhereClause <T > =
114
118
transactionStatementsGroup?.let {
115
119
val statement = Update .update(this , databaseConnection, it, clause)
@@ -123,11 +127,13 @@ public class DatabaseScope internal constructor(
123
127
* Delete.
124
128
*/
125
129
130
+ @StatementDslMaker
126
131
public infix fun Table <* >.DELETE (x : X ) {
127
132
val statement = Delete .deleteAllEntities(this , databaseConnection)
128
133
addStatement(statement)
129
134
}
130
135
136
+ @StatementDslMaker
131
137
public infix fun <T > Table<T>.DELETE (clause : WhereClause <T >) {
132
138
val statement = Delete .delete(this , databaseConnection, clause)
133
139
addStatement(statement)
@@ -140,12 +146,16 @@ public class DatabaseScope internal constructor(
140
146
/* *
141
147
* Select with no any clause.
142
148
*/
149
+
150
+ @StatementDslMaker
143
151
public inline infix fun <reified T > Table<T>.SELECT (x : X ): FinalSelectStatement <T > =
144
152
select(kSerializer(), false )
145
153
154
+ @StatementDslMaker
146
155
public inline infix fun <reified T > Table<T>.SELECT_DISTINCT (x : X ): FinalSelectStatement <T > =
147
156
select(kSerializer(), true )
148
157
158
+ @StatementDslMaker
149
159
public fun <T > Table<T>.select (serializer : KSerializer <T >, isDistinct : Boolean ): FinalSelectStatement <T > {
150
160
val container = getSelectStatementGroup()
151
161
val statement = Select .select(this , isDistinct, serializer, databaseConnection, container)
@@ -156,9 +166,12 @@ public class DatabaseScope internal constructor(
156
166
/* *
157
167
* Receive the 'WHERE' clause.
158
168
*/
169
+
170
+ @StatementDslMaker
159
171
public inline infix fun <reified T > Table<T>.SELECT (clause : WhereClause <T >): WhereSelectStatement <T > =
160
172
select(kSerializer(), clause, false )
161
173
174
+ @StatementDslMaker
162
175
public inline infix fun <reified T > Table<T>.SELECT_DISTINCT (clause : WhereClause <T >): WhereSelectStatement <T > =
163
176
select(kSerializer(), clause, true )
164
177
@@ -172,9 +185,12 @@ public class DatabaseScope internal constructor(
172
185
/* *
173
186
* Receive the 'ORDER BY' clause.
174
187
*/
188
+
189
+ @StatementDslMaker
175
190
public inline infix fun <reified T > Table<T>.SELECT (clause : OrderByClause <T >): OrderBySelectStatement <T > =
176
191
select(kSerializer(), clause, false )
177
192
193
+ @StatementDslMaker
178
194
public inline infix fun <reified T > Table<T>.SELECT_DISTINCT (clause : OrderByClause <T >): OrderBySelectStatement <T > =
179
195
select(kSerializer(), clause, true )
180
196
@@ -188,9 +204,12 @@ public class DatabaseScope internal constructor(
188
204
/* *
189
205
* Receive the 'LIMIT' clause.
190
206
*/
207
+
208
+ @StatementDslMaker
191
209
public inline infix fun <reified T > Table<T>.SELECT (clause : LimitClause <T >): LimitSelectStatement <T > =
192
210
select(kSerializer(), clause, false )
193
211
212
+ @StatementDslMaker
194
213
public inline infix fun <reified T > Table<T>.SELECT_DISTINCT (clause : LimitClause <T >): LimitSelectStatement <T > =
195
214
select(kSerializer(), clause, true )
196
215
@@ -204,9 +223,12 @@ public class DatabaseScope internal constructor(
204
223
/* *
205
224
* Receive the 'GROUP BY' clause.
206
225
*/
226
+
227
+ @StatementDslMaker
207
228
public inline infix fun <reified T > Table<T>.SELECT (clause : GroupByClause <T >): GroupBySelectStatement <T > =
208
229
select(kSerializer(), clause, false )
209
230
231
+ @StatementDslMaker
210
232
public inline infix fun <reified T > Table<T>.SELECT_DISTINCT (clause : GroupByClause <T >): GroupBySelectStatement <T > =
211
233
select(kSerializer(), clause, true )
212
234
@@ -239,6 +261,7 @@ public class DatabaseScope internal constructor(
239
261
}
240
262
}
241
263
264
+ @StatementDslMaker
242
265
public inline fun <T > Table<T>.UNION_ALL (block : Table <T >.(Table <T >) -> Unit ): FinalSelectStatement <T > {
243
266
beginUnion<T >()
244
267
var selectStatement: SelectStatement <T >? = null
@@ -269,9 +292,11 @@ public class DatabaseScope internal constructor(
269
292
* Receive the 'JOIN' clause.
270
293
*/
271
294
295
+ @StatementDslMaker
272
296
public inline infix fun <T , reified R > Table<T>.SELECT (clause : JoinClause <R >): JoinStatementWithoutCondition <R > =
273
297
select(getKSerializer(), clause, false )
274
298
299
+ @StatementDslMaker
275
300
public inline infix fun <T , reified R > Table<T>.SELECT_DISTINCT (clause : JoinClause <R >): JoinStatementWithoutCondition <R > =
276
301
select(getKSerializer(), clause, true )
277
302
@@ -284,9 +309,11 @@ public class DatabaseScope internal constructor(
284
309
* Receive the natural join clause(includes 'NATURAL LEFT OUTER JOIN' and 'NATURAL INNER JOIN').
285
310
*/
286
311
312
+ @StatementDslMaker
287
313
public inline infix fun <T , reified R > Table<T>.SELECT (clause : NaturalJoinClause <R >): JoinSelectStatement <R > =
288
314
select(getKSerializer(), clause, false )
289
315
316
+ @StatementDslMaker
290
317
public inline infix fun <T , reified R > Table<T>.SELECT_DISTINCT (clause : NaturalJoinClause <R >): JoinSelectStatement <R > =
291
318
select(getKSerializer(), clause, true )
292
319
0 commit comments