Skip to content

Commit a8b513a

Browse files
committed
Make the receivers more typical for Kotlin
1 parent cbffbd6 commit a8b513a

12 files changed

+67
-72
lines changed

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/CriteriaCollector.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import org.mybatis.dynamic.sql.BindableColumn
1919
import org.mybatis.dynamic.sql.SqlCriterion
2020
import org.mybatis.dynamic.sql.VisitableCondition
2121

22-
typealias CriteriaReceiver = CriteriaCollector.() -> CriteriaCollector
22+
typealias CriteriaReceiver = CriteriaCollector.() -> Unit
2323

2424
@MyBatisDslMarker
2525
class CriteriaCollector {
@@ -38,13 +38,13 @@ class CriteriaCollector {
3838
fun <T> and(
3939
column: BindableColumn<T>,
4040
condition: VisitableCondition<T>,
41-
collect: CriteriaReceiver
41+
criteriaReceiver: CriteriaReceiver
4242
) =
4343
apply {
4444
criteria.add(
4545
SqlCriterion.withColumn(column)
4646
.withCondition(condition)
47-
.withSubCriteria(collect(CriteriaCollector()).criteria)
47+
.withSubCriteria(CriteriaCollector().apply(criteriaReceiver).criteria)
4848
.withConnector("and")
4949
.build()
5050
)
@@ -63,13 +63,13 @@ class CriteriaCollector {
6363
fun <T> or(
6464
column: BindableColumn<T>,
6565
condition: VisitableCondition<T>,
66-
collect: CriteriaReceiver
66+
criteriaReceiver: CriteriaReceiver
6767
) =
6868
apply {
6969
criteria.add(
7070
SqlCriterion.withColumn(column)
7171
.withCondition(condition)
72-
.withSubCriteria(collect(CriteriaCollector()).criteria)
72+
.withSubCriteria(CriteriaCollector().apply(criteriaReceiver).criteria)
7373
.withConnector("or")
7474
.build()
7575
)

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/JoinCollector.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import org.mybatis.dynamic.sql.BasicColumn
1919
import org.mybatis.dynamic.sql.select.join.JoinCondition
2020
import org.mybatis.dynamic.sql.select.join.JoinCriterion
2121

22-
typealias JoinReceiver = JoinCollector.() -> JoinCollector
22+
typealias JoinReceiver = JoinCollector.() -> Unit
2323

2424
@MyBatisDslMarker
2525
class JoinCollector {

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinBaseBuilders.kt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ abstract class KotlinBaseBuilder<W : AbstractWhereDSL<W>, B : KotlinBaseBuilder<
3838

3939
fun <T> where(column: BindableColumn<T>, condition: VisitableCondition<T>, subCriteria: CriteriaReceiver): B =
4040
applySelf {
41-
getWhere().where(column, condition, subCriteria(CriteriaCollector()).criteria)
41+
getWhere().where(column, condition, CriteriaCollector().apply(subCriteria).criteria)
4242
}
4343

4444
fun applyWhere(whereApplier: WhereApplier): B =
@@ -53,7 +53,7 @@ abstract class KotlinBaseBuilder<W : AbstractWhereDSL<W>, B : KotlinBaseBuilder<
5353

5454
fun <T> and(column: BindableColumn<T>, condition: VisitableCondition<T>, subCriteria: CriteriaReceiver): B =
5555
applySelf {
56-
getWhere().and(column, condition, subCriteria(CriteriaCollector()).criteria)
56+
getWhere().and(column, condition, CriteriaCollector().apply(subCriteria).criteria)
5757
}
5858

5959
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>): B =
@@ -63,7 +63,7 @@ abstract class KotlinBaseBuilder<W : AbstractWhereDSL<W>, B : KotlinBaseBuilder<
6363

6464
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>, subCriteria: CriteriaReceiver): B =
6565
applySelf {
66-
getWhere().or(column, condition, subCriteria(CriteriaCollector()).criteria)
66+
getWhere().or(column, condition, CriteriaCollector().apply(subCriteria).criteria)
6767
}
6868

6969
fun allRows() = self()
@@ -91,11 +91,11 @@ abstract class KotlinBaseJoiningBuilder<T : AbstractQueryExpressionDSL<T, Select
9191
}
9292

9393
fun join(
94-
subQuery: KotlinQualifiedSubQueryBuilder.() -> KotlinQualifiedSubQueryBuilder,
94+
subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit,
9595
joinCriteria: JoinReceiver
9696
) =
9797
applyJoin(joinCriteria) {
98-
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
98+
val builder = KotlinQualifiedSubQueryBuilder().apply(subQuery)
9999
getDsl().join(builder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
100100
}
101101

@@ -110,11 +110,11 @@ abstract class KotlinBaseJoiningBuilder<T : AbstractQueryExpressionDSL<T, Select
110110
}
111111

112112
fun fullJoin(
113-
subQuery: KotlinQualifiedSubQueryBuilder.() -> KotlinQualifiedSubQueryBuilder,
113+
subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit,
114114
joinCriteria: JoinReceiver
115115
) =
116116
applyJoin(joinCriteria) {
117-
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
117+
val builder = KotlinQualifiedSubQueryBuilder().apply(subQuery)
118118
getDsl().fullJoin(builder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
119119
}
120120

@@ -129,11 +129,11 @@ abstract class KotlinBaseJoiningBuilder<T : AbstractQueryExpressionDSL<T, Select
129129
}
130130

131131
fun leftJoin(
132-
subQuery: KotlinQualifiedSubQueryBuilder.() -> KotlinQualifiedSubQueryBuilder,
132+
subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit,
133133
joinCriteria: JoinReceiver
134134
) =
135135
applyJoin(joinCriteria) {
136-
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
136+
val builder = KotlinQualifiedSubQueryBuilder().apply(subQuery)
137137
getDsl().leftJoin(builder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
138138
}
139139

@@ -148,17 +148,17 @@ abstract class KotlinBaseJoiningBuilder<T : AbstractQueryExpressionDSL<T, Select
148148
}
149149

150150
fun rightJoin(
151-
subQuery: KotlinQualifiedSubQueryBuilder.() -> KotlinQualifiedSubQueryBuilder,
151+
subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit,
152152
joinCriteria: JoinReceiver
153153
) =
154154
applyJoin(joinCriteria) {
155-
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
155+
val builder = KotlinQualifiedSubQueryBuilder().apply(subQuery)
156156
getDsl().rightJoin(builder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
157157
}
158158

159159
private fun applyJoin(joinCriteria: JoinReceiver, block: (JoinCollector) -> Unit) =
160160
applySelf {
161-
joinCriteria(JoinCollector()).also(block)
161+
JoinCollector().apply(joinCriteria).apply(block)
162162
}
163163

164164
protected abstract fun getDsl(): AbstractQueryExpressionDSL<T, SelectModel>

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinConditions.kt

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,26 @@ import org.mybatis.dynamic.sql.where.condition.IsLessThanWithSubselect
2424
import org.mybatis.dynamic.sql.where.condition.IsNotEqualToWithSubselect
2525
import org.mybatis.dynamic.sql.where.condition.IsNotInWithSubselect
2626

27-
fun <T> isEqualTo(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
28-
IsEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
27+
fun <T> isEqualTo(subQuery: KotlinSubQueryBuilder.() -> Unit) =
28+
IsEqualToWithSubselect.of<T>(KotlinSubQueryBuilder().apply(subQuery))
2929

30-
fun <T> isNotEqualTo(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
31-
IsNotEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
30+
fun <T> isNotEqualTo(subQuery: KotlinSubQueryBuilder.() -> Unit) =
31+
IsNotEqualToWithSubselect.of<T>(KotlinSubQueryBuilder().apply(subQuery))
3232

33-
fun <T> isIn(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
34-
IsInWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
33+
fun <T> isIn(subQuery: KotlinSubQueryBuilder.() -> Unit) =
34+
IsInWithSubselect.of<T>(KotlinSubQueryBuilder().apply(subQuery))
3535

36-
fun <T> isNotIn(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
37-
IsNotInWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
36+
fun <T> isNotIn(subQuery: KotlinSubQueryBuilder.() -> Unit) =
37+
IsNotInWithSubselect.of<T>(KotlinSubQueryBuilder().apply(subQuery))
3838

39-
fun <T> isGreaterThan(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
40-
IsGreaterThanWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
39+
fun <T> isGreaterThan(subQuery: KotlinSubQueryBuilder.() -> Unit) =
40+
IsGreaterThanWithSubselect.of<T>(KotlinSubQueryBuilder().apply(subQuery))
4141

42-
fun <T> isGreaterThanOrEqualTo(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
43-
IsGreaterThanOrEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
42+
fun <T> isGreaterThanOrEqualTo(subQuery: KotlinSubQueryBuilder.() -> Unit) =
43+
IsGreaterThanOrEqualToWithSubselect.of<T>(KotlinSubQueryBuilder().apply(subQuery))
4444

45-
fun <T> isLessThan(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
46-
IsLessThanWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
45+
fun <T> isLessThan(subQuery: KotlinSubQueryBuilder.() -> Unit) =
46+
IsLessThanWithSubselect.of<T>(KotlinSubQueryBuilder().apply(subQuery))
4747

48-
fun <T> isLessThanOrEqualTo(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
49-
IsLessThanOrEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
48+
fun <T> isLessThanOrEqualTo(subQuery: KotlinSubQueryBuilder.() -> Unit) =
49+
IsLessThanOrEqualToWithSubselect.of<T>(KotlinSubQueryBuilder().apply(subQuery))

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinCountBuilder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import org.mybatis.dynamic.sql.select.CountDSL
2020
import org.mybatis.dynamic.sql.select.SelectModel
2121
import org.mybatis.dynamic.sql.util.Buildable
2222

23-
typealias CountCompleter = KotlinCountBuilder.() -> KotlinCountBuilder
23+
typealias CountCompleter = KotlinCountBuilder.() -> Unit
2424

2525
class KotlinCountBuilder(private val fromGatherer: CountDSL.FromGatherer<SelectModel>) :
2626
KotlinBaseJoiningBuilder<CountDSL<SelectModel>,

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinDeleteBuilder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import org.mybatis.dynamic.sql.delete.DeleteDSL
1919
import org.mybatis.dynamic.sql.delete.DeleteModel
2020
import org.mybatis.dynamic.sql.util.Buildable
2121

22-
typealias DeleteCompleter = KotlinDeleteBuilder.() -> KotlinDeleteBuilder
22+
typealias DeleteCompleter = KotlinDeleteBuilder.() -> Unit
2323

2424
class KotlinDeleteBuilder(private val dsl: DeleteDSL<DeleteModel>) :
2525
KotlinBaseBuilder<DeleteDSL<DeleteModel>.DeleteWhereBuilder, KotlinDeleteBuilder>(), Buildable<DeleteModel> {

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinInsertHelpers.kt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,16 @@
1616
package org.mybatis.dynamic.sql.util.kotlin
1717

1818
import org.mybatis.dynamic.sql.insert.BatchInsertDSL
19-
import org.mybatis.dynamic.sql.insert.BatchInsertModel
2019
import org.mybatis.dynamic.sql.insert.GeneralInsertDSL
21-
import org.mybatis.dynamic.sql.insert.GeneralInsertModel
2220
import org.mybatis.dynamic.sql.insert.InsertDSL
23-
import org.mybatis.dynamic.sql.insert.InsertModel
2421
import org.mybatis.dynamic.sql.insert.MultiRowInsertDSL
25-
import org.mybatis.dynamic.sql.insert.MultiRowInsertModel
26-
import org.mybatis.dynamic.sql.util.Buildable
2722

28-
typealias GeneralInsertCompleter = @MyBatisDslMarker GeneralInsertDSL.() -> Buildable<GeneralInsertModel>
23+
typealias GeneralInsertCompleter = @MyBatisDslMarker GeneralInsertDSL.() -> Unit
2924

30-
typealias InsertCompleter<T> = @MyBatisDslMarker InsertDSL<T>.() -> Buildable<InsertModel<T>>
25+
typealias InsertCompleter<T> = @MyBatisDslMarker InsertDSL<T>.() -> Unit
3126

32-
typealias MultiRowInsertCompleter<T> = @MyBatisDslMarker MultiRowInsertDSL<T>.() -> Buildable<MultiRowInsertModel<T>>
27+
typealias MultiRowInsertCompleter<T> = @MyBatisDslMarker MultiRowInsertDSL<T>.() -> Unit
3328

34-
typealias BatchInsertCompleter<T> = @MyBatisDslMarker BatchInsertDSL<T>.() -> Buildable<BatchInsertModel<T>>
29+
typealias BatchInsertCompleter<T> = @MyBatisDslMarker BatchInsertDSL<T>.() -> Unit
3530

36-
typealias InsertSelectCompleter =
37-
@MyBatisDslMarker KotlinInsertSelectSubQueryBuilder.() -> KotlinInsertSelectSubQueryBuilder
31+
typealias InsertSelectCompleter = @MyBatisDslMarker KotlinInsertSelectSubQueryBuilder.() -> Unit

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinModelBuilderFunctions.kt

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.mybatis.dynamic.sql.SqlTable
2121
import org.mybatis.dynamic.sql.insert.BatchInsertDSL
2222
import org.mybatis.dynamic.sql.insert.GeneralInsertDSL
2323
import org.mybatis.dynamic.sql.insert.InsertDSL
24+
import org.mybatis.dynamic.sql.insert.InsertSelectModel
2425
import org.mybatis.dynamic.sql.insert.MultiRowInsertDSL
2526

2627
/**
@@ -32,51 +33,51 @@ import org.mybatis.dynamic.sql.insert.MultiRowInsertDSL
3233
@Suppress("TooManyFunctions")
3334
object KotlinModelBuilderFunctions {
3435
fun count(column: BasicColumn, completer: CountCompleter) =
35-
completer(KotlinCountBuilder(SqlBuilder.countColumn(column))).build()
36+
KotlinCountBuilder(SqlBuilder.countColumn(column)).apply(completer).build()
3637

3738
fun countDistinct(column: BasicColumn, completer: CountCompleter) =
38-
completer(KotlinCountBuilder(SqlBuilder.countDistinctColumn(column))).build()
39+
KotlinCountBuilder(SqlBuilder.countDistinctColumn(column)).apply(completer).build()
3940

4041
fun countFrom(table: SqlTable, completer: CountCompleter) =
41-
with(KotlinCountBuilder(SqlBuilder.countColumn(SqlBuilder.constant<Long>("*")))) {
42-
completer(from(table)).build()
43-
}
42+
KotlinCountBuilder(SqlBuilder.countColumn(SqlBuilder.constant<Long>("*")))
43+
.from(table).apply(completer).build()
4444

4545
fun deleteFrom(table: SqlTable, completer: DeleteCompleter) =
46-
completer(KotlinDeleteBuilder(SqlBuilder.deleteFrom(table))).build()
46+
KotlinDeleteBuilder(SqlBuilder.deleteFrom(table)).apply(completer).build()
4747

4848
fun insertInto(table: SqlTable, completer: GeneralInsertCompleter) =
49-
completer(GeneralInsertDSL.insertInto(table)).build()
49+
GeneralInsertDSL.insertInto(table).apply(completer).build()
5050

51-
fun insertSelect(table: SqlTable, completer: InsertSelectCompleter) =
52-
with(completer(KotlinInsertSelectSubQueryBuilder())) {
53-
SqlBuilder.insertInto(table)
51+
fun insertSelect(table: SqlTable, completer: InsertSelectCompleter): InsertSelectModel {
52+
with(KotlinInsertSelectSubQueryBuilder().apply(completer)) {
53+
return SqlBuilder.insertInto(table)
5454
.withColumnList(columnList)
5555
.withSelectStatement(this)
5656
.build()
5757
}
58+
}
5859

5960
fun <T> BatchInsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: BatchInsertCompleter<T>) =
60-
completer(into(table)).build()
61+
into(table).also(completer).build()
6162

6263
fun <T> InsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: InsertCompleter<T>) =
63-
completer(into(table)).build()
64+
into(table).apply(completer).build()
6465

6566
fun <T> MultiRowInsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: MultiRowInsertCompleter<T>) =
66-
completer(into(table)).build()
67+
into(table).apply(completer).build()
6768

6869
fun select(vararg columns: BasicColumn, completer: SelectCompleter) =
6970
select(columns.asList(), completer)
7071

7172
fun select(columns: List<BasicColumn>, completer: SelectCompleter) =
72-
completer(KotlinSelectBuilder(SqlBuilder.select(columns))).build()
73+
KotlinSelectBuilder(SqlBuilder.select(columns)).apply(completer).build()
7374

7475
fun selectDistinct(vararg columns: BasicColumn, completer: SelectCompleter) =
7576
selectDistinct(columns.asList(), completer)
7677

7778
fun selectDistinct(columns: List<BasicColumn>, completer: SelectCompleter) =
78-
completer(KotlinSelectBuilder(SqlBuilder.selectDistinct(columns))).build()
79+
KotlinSelectBuilder(SqlBuilder.selectDistinct(columns)).apply(completer).build()
7980

8081
fun update(table: SqlTable, completer: UpdateCompleter) =
81-
completer(KotlinUpdateBuilder(SqlBuilder.update(table))).build()
82+
KotlinUpdateBuilder(SqlBuilder.update(table)).apply(completer).build()
8283
}

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinSelectBuilder.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import org.mybatis.dynamic.sql.select.SelectModel
2222
import org.mybatis.dynamic.sql.util.Buildable
2323
import org.mybatis.dynamic.sql.select.QueryExpressionDSL
2424

25-
typealias SelectCompleter = KotlinSelectBuilder.() -> KotlinSelectBuilder
25+
typealias SelectCompleter = KotlinSelectBuilder.() -> Unit
2626

2727
@Suppress("TooManyFunctions")
2828
class KotlinSelectBuilder(private val fromGatherer: QueryExpressionDSL.FromGatherer<SelectModel>) :
@@ -42,9 +42,9 @@ class KotlinSelectBuilder(private val fromGatherer: QueryExpressionDSL.FromGathe
4242
dsl = fromGatherer.from(table, alias)
4343
}
4444

45-
fun from(subQuery: KotlinQualifiedSubQueryBuilder.() -> KotlinQualifiedSubQueryBuilder) =
45+
fun from(subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit) =
4646
apply {
47-
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
47+
val builder = KotlinQualifiedSubQueryBuilder().apply(subQuery)
4848
dsl = fromGatherer.from(builder, builder.correlationName)
4949
}
5050

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinSubQueryBuilders.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ sealed class KotlinBaseSubQueryBuilder<T : KotlinBaseSubQueryBuilder<T>> : Build
3030

3131
fun select(selectList: List<BasicColumn>, completer: SelectCompleter) =
3232
applySelf {
33-
selectBuilder = completer(KotlinSelectBuilder(SqlBuilder.select(selectList)))
33+
selectBuilder = KotlinSelectBuilder(SqlBuilder.select(selectList)).apply(completer)
3434
}
3535

3636
fun selectDistinct(vararg selectList: BasicColumn, completer: SelectCompleter) =
3737
selectDistinct(selectList.toList(), completer)
3838

3939
fun selectDistinct(selectList: List<BasicColumn>, completer: SelectCompleter) =
4040
applySelf {
41-
selectBuilder = completer(KotlinSelectBuilder(SqlBuilder.selectDistinct(selectList)))
41+
selectBuilder = KotlinSelectBuilder(SqlBuilder.selectDistinct(selectList)).apply(completer)
4242
}
4343

4444
override fun build() = selectBuilder.build()

0 commit comments

Comments
 (0)