Skip to content

Commit d1226e2

Browse files
committed
Kotlin SubQuery builders can implement Buildable
1 parent 666ff07 commit d1226e2

File tree

6 files changed

+21
-17
lines changed

6 files changed

+21
-17
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ abstract class KotlinBaseJoiningBuilder<T : AbstractQueryExpressionDSL<T, Select
9696
) =
9797
applyJoin(joinCriteria) {
9898
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
99-
getDsl().join(builder.selectBuilder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
99+
getDsl().join(builder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
100100
}
101101

102102
fun fullJoin(table: SqlTable, joinCriteria: JoinReceiver) =
@@ -115,7 +115,7 @@ abstract class KotlinBaseJoiningBuilder<T : AbstractQueryExpressionDSL<T, Select
115115
) =
116116
applyJoin(joinCriteria) {
117117
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
118-
getDsl().fullJoin(builder.selectBuilder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
118+
getDsl().fullJoin(builder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
119119
}
120120

121121
fun leftJoin(table: SqlTable, joinCriteria: JoinReceiver) =
@@ -134,7 +134,7 @@ abstract class KotlinBaseJoiningBuilder<T : AbstractQueryExpressionDSL<T, Select
134134
) =
135135
applyJoin(joinCriteria) {
136136
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
137-
getDsl().leftJoin(builder.selectBuilder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
137+
getDsl().leftJoin(builder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
138138
}
139139

140140
fun rightJoin(table: SqlTable, joinCriteria: JoinReceiver) =
@@ -153,7 +153,7 @@ abstract class KotlinBaseJoiningBuilder<T : AbstractQueryExpressionDSL<T, Select
153153
) =
154154
applyJoin(joinCriteria) {
155155
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
156-
getDsl().rightJoin(builder.selectBuilder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
156+
getDsl().rightJoin(builder, builder.correlationName, it.onJoinCriterion, it.andJoinCriteria)
157157
}
158158

159159
private fun applyJoin(joinCriteria: JoinReceiver, block: (JoinCollector) -> Unit) =

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,25 @@ import org.mybatis.dynamic.sql.where.condition.IsNotEqualToWithSubselect
2525
import org.mybatis.dynamic.sql.where.condition.IsNotInWithSubselect
2626

2727
fun <T> isEqualTo(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
28-
IsEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()).selectBuilder)
28+
IsEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
2929

3030
fun <T> isNotEqualTo(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
31-
IsNotEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()).selectBuilder)
31+
IsNotEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
3232

3333
fun <T> isIn(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
34-
IsInWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()).selectBuilder)
34+
IsInWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
3535

3636
fun <T> isNotIn(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
37-
IsNotInWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()).selectBuilder)
37+
IsNotInWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
3838

3939
fun <T> isGreaterThan(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
40-
IsGreaterThanWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()).selectBuilder)
40+
IsGreaterThanWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
4141

4242
fun <T> isGreaterThanOrEqualTo(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
43-
IsGreaterThanOrEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()).selectBuilder)
43+
IsGreaterThanOrEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
4444

4545
fun <T> isLessThan(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
46-
IsLessThanWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()).selectBuilder)
46+
IsLessThanWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))
4747

4848
fun <T> isLessThanOrEqualTo(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
49-
IsLessThanOrEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()).selectBuilder)
49+
IsLessThanOrEqualToWithSubselect.of<T>(subQuery(KotlinSubQueryBuilder()))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ object KotlinModelBuilderFunctions {
5252
with(completer(KotlinInsertSelectSubQueryBuilder())) {
5353
SqlBuilder.insertInto(table)
5454
.withColumnList(columnList)
55-
.withSelectStatement(selectBuilder)
55+
.withSelectStatement(this)
5656
.build()
5757
}
5858

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class KotlinSelectBuilder(private val fromGatherer: QueryExpressionDSL.FromGathe
4545
fun from(subQuery: KotlinQualifiedSubQueryBuilder.() -> KotlinQualifiedSubQueryBuilder) =
4646
apply {
4747
val builder = subQuery(KotlinQualifiedSubQueryBuilder())
48-
dsl = fromGatherer.from(builder.selectBuilder, builder.correlationName)
48+
dsl = fromGatherer.from(builder, builder.correlationName)
4949
}
5050

5151
fun groupBy(vararg columns: BasicColumn) =

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ package org.mybatis.dynamic.sql.util.kotlin
1818
import org.mybatis.dynamic.sql.BasicColumn
1919
import org.mybatis.dynamic.sql.SqlBuilder
2020
import org.mybatis.dynamic.sql.SqlColumn
21+
import org.mybatis.dynamic.sql.select.SelectModel
22+
import org.mybatis.dynamic.sql.util.Buildable
2123

2224
@MyBatisDslMarker
23-
sealed class KotlinBaseSubQueryBuilder<T : KotlinBaseSubQueryBuilder<T> > {
24-
lateinit var selectBuilder: KotlinSelectBuilder
25+
sealed class KotlinBaseSubQueryBuilder<T : KotlinBaseSubQueryBuilder<T>> : Buildable<SelectModel> {
26+
private lateinit var selectBuilder: KotlinSelectBuilder
2527

2628
fun select(vararg selectList: BasicColumn, completer: SelectCompleter) =
2729
select(selectList.toList(), completer)
@@ -39,6 +41,8 @@ sealed class KotlinBaseSubQueryBuilder<T : KotlinBaseSubQueryBuilder<T> > {
3941
selectBuilder = completer(KotlinSelectBuilder(SqlBuilder.selectDistinct(selectList)))
4042
}
4143

44+
override fun build() = selectBuilder.build()
45+
4246
private fun applySelf(block: T.() -> Unit): T =
4347
self().apply { block() }
4448

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class KotlinUpdateBuilder(private val dsl: UpdateDSL<UpdateModel>) :
6868

6969
fun equalToQueryResult(subQuery: KotlinSubQueryBuilder.() -> KotlinSubQueryBuilder) =
7070
applyToDsl {
71-
set(column).equalTo(subQuery(KotlinSubQueryBuilder()).selectBuilder)
71+
set(column).equalTo(subQuery(KotlinSubQueryBuilder()))
7272
}
7373

7474
fun equalToWhenPresent(value: () -> T?) =

0 commit comments

Comments
 (0)