Skip to content

Commit d8bd926

Browse files
committed
SubQuery Builders have Unit functions
1 parent 1495170 commit d8bd926

File tree

1 file changed

+18
-34
lines changed

1 file changed

+18
-34
lines changed
Lines changed: 18 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016-2021 the original author or authors.
2+
* Copyright 2016-2022 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -22,24 +22,22 @@ import org.mybatis.dynamic.sql.select.SelectModel
2222
import org.mybatis.dynamic.sql.util.Buildable
2323

2424
@MyBatisDslMarker
25-
sealed class KotlinBaseSubQueryBuilder<T : KotlinBaseSubQueryBuilder<T>> : Buildable<SelectModel> {
25+
sealed class KotlinBaseSubQueryBuilder : Buildable<SelectModel> {
2626
private lateinit var selectBuilder: KotlinSelectBuilder
2727

28-
fun select(vararg selectList: BasicColumn, completer: SelectCompleter): T =
28+
fun select(vararg selectList: BasicColumn, completer: SelectCompleter): Unit =
2929
select(selectList.toList(), completer)
3030

31-
fun select(selectList: List<BasicColumn>, completer: SelectCompleter): T =
32-
applySelf {
33-
selectBuilder = KotlinSelectBuilder(SqlBuilder.select(selectList)).apply(completer)
34-
}
31+
fun select(selectList: List<BasicColumn>, completer: SelectCompleter) {
32+
selectBuilder = KotlinSelectBuilder(SqlBuilder.select(selectList)).apply(completer)
33+
}
3534

36-
fun selectDistinct(vararg selectList: BasicColumn, completer: SelectCompleter): T =
35+
fun selectDistinct(vararg selectList: BasicColumn, completer: SelectCompleter): Unit =
3736
selectDistinct(selectList.toList(), completer)
3837

39-
fun selectDistinct(selectList: List<BasicColumn>, completer: SelectCompleter): T =
40-
applySelf {
41-
selectBuilder = KotlinSelectBuilder(SqlBuilder.selectDistinct(selectList)).apply(completer)
42-
}
38+
fun selectDistinct(selectList: List<BasicColumn>, completer: SelectCompleter) {
39+
selectBuilder = KotlinSelectBuilder(SqlBuilder.selectDistinct(selectList)).apply(completer)
40+
}
4341

4442
override fun build(): SelectModel =
4543
try {
@@ -49,29 +47,19 @@ sealed class KotlinBaseSubQueryBuilder<T : KotlinBaseSubQueryBuilder<T>> : Build
4947
"You must specify a select statement", e
5048
)
5149
}
52-
53-
private fun applySelf(block: T.() -> Unit): T =
54-
self().apply { block() }
55-
56-
protected abstract fun self(): T
5750
}
5851

59-
class KotlinSubQueryBuilder : KotlinBaseSubQueryBuilder<KotlinSubQueryBuilder>() {
60-
override fun self(): KotlinSubQueryBuilder = this
61-
}
52+
class KotlinSubQueryBuilder : KotlinBaseSubQueryBuilder() {}
6253

63-
class KotlinQualifiedSubQueryBuilder : KotlinBaseSubQueryBuilder<KotlinQualifiedSubQueryBuilder>() {
54+
class KotlinQualifiedSubQueryBuilder : KotlinBaseSubQueryBuilder() {
6455
var correlationName: String? = null
6556

66-
operator fun String.unaryPlus(): KotlinQualifiedSubQueryBuilder {
57+
operator fun String.unaryPlus() {
6758
correlationName = this
68-
return self()
6959
}
70-
71-
override fun self(): KotlinQualifiedSubQueryBuilder = this
7260
}
7361

74-
class KotlinInsertSelectSubQueryBuilder : KotlinBaseSubQueryBuilder<KotlinInsertSelectSubQueryBuilder>() {
62+
class KotlinInsertSelectSubQueryBuilder : KotlinBaseSubQueryBuilder() {
7563
private lateinit var lateColumnList: List<SqlColumn<*>>
7664

7765
val columnList: List<SqlColumn<*>>
@@ -84,13 +72,9 @@ class KotlinInsertSelectSubQueryBuilder : KotlinBaseSubQueryBuilder<KotlinInsert
8472
)
8573
}
8674

87-
fun columns(vararg columnList: SqlColumn<*>): KotlinInsertSelectSubQueryBuilder =
88-
columns(columnList.asList())
75+
fun columns(vararg columnList: SqlColumn<*>): Unit = columns(columnList.asList())
8976

90-
fun columns(columnList: List<SqlColumn<*>>): KotlinInsertSelectSubQueryBuilder =
91-
apply {
92-
this.lateColumnList = columnList
93-
}
94-
95-
override fun self(): KotlinInsertSelectSubQueryBuilder = this
77+
fun columns(columnList: List<SqlColumn<*>>) {
78+
this.lateColumnList = columnList
79+
}
9680
}

0 commit comments

Comments
 (0)