Skip to content

Commit 3cc83da

Browse files
committed
Update Kotlin DSL for new Join syntax
1 parent 6816dac commit 3cc83da

File tree

3 files changed

+844
-17
lines changed

3 files changed

+844
-17
lines changed

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,28 @@ typealias JoinReceiver = JoinCollector.() -> Unit
2626

2727
@MyBatisDslMarker
2828
class JoinCollector {
29-
private var onJoinCriterion: SqlCriterion? = null
30-
internal val andJoinCriteria = mutableListOf<AndOrCriteriaGroup>()
29+
private var initialCriterion: SqlCriterion? = null
30+
internal val subCriteria = mutableListOf<AndOrCriteriaGroup>()
3131

32-
internal fun onJoinCriterion() : SqlCriterion = invalidIfNull(onJoinCriterion, "ERROR.22") //$NON-NLS-1$
32+
internal fun initialCriterion() : SqlCriterion = invalidIfNull(initialCriterion, "ERROR.22") //$NON-NLS-1$
3333

34+
fun on (receiver: GroupingCriteriaReceiver) {
35+
GroupingCriteriaCollector().apply(receiver).also {
36+
initialCriterion = it.initialCriterion
37+
subCriteria.addAll(it.subCriteria)
38+
}
39+
}
40+
41+
// TODO - Deprecate?
3442
fun <T> on(leftColumn: BindableColumn<T>): RightColumnCollector<T> = RightColumnCollector {
35-
onJoinCriterion = ColumnAndConditionCriterion.withColumn(leftColumn)
43+
initialCriterion = ColumnAndConditionCriterion.withColumn(leftColumn)
3644
.withCondition(it)
3745
.build()
3846
}
3947

48+
// TODO - Deprecate?
4049
fun <T> and(leftColumn: BindableColumn<T>): RightColumnCollector<T> = RightColumnCollector {
41-
andJoinCriteria.add(
50+
subCriteria.add(
4251
AndOrCriteriaGroup.Builder()
4352
.withConnector("and") //$NON-NLS-1$
4453
.withInitialCriterion(ColumnAndConditionCriterion.withColumn(leftColumn).withCondition(it).build())

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
@@ -66,74 +66,74 @@ abstract class KotlinBaseJoiningBuilder<D : AbstractQueryExpressionDSL<*, *>> :
6666

6767
fun join(table: SqlTable, joinCriteria: JoinReceiver): Unit =
6868
applyToDsl(joinCriteria) { jc ->
69-
join(table, jc.onJoinCriterion(), jc.andJoinCriteria)
69+
join(table, jc.initialCriterion(), jc.subCriteria)
7070
}
7171

7272
fun join(table: SqlTable, alias: String, joinCriteria: JoinReceiver): Unit =
7373
applyToDsl(joinCriteria) { jc ->
74-
join(table, alias, jc.onJoinCriterion(), jc.andJoinCriteria)
74+
join(table, alias, jc.initialCriterion(), jc.subCriteria)
7575
}
7676

7777
fun join(
7878
subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit,
7979
joinCriteria: JoinReceiver
8080
): Unit =
8181
applyToDsl(subQuery, joinCriteria) { sq, jc ->
82-
join(sq, sq.correlationName, jc.onJoinCriterion(), jc.andJoinCriteria)
82+
join(sq, sq.correlationName, jc.initialCriterion(), jc.subCriteria)
8383
}
8484

8585
fun fullJoin(table: SqlTable, joinCriteria: JoinReceiver): Unit =
8686
applyToDsl(joinCriteria) { jc ->
87-
fullJoin(table, jc.onJoinCriterion(), jc.andJoinCriteria)
87+
fullJoin(table, jc.initialCriterion(), jc.subCriteria)
8888
}
8989

9090
fun fullJoin(table: SqlTable, alias: String, joinCriteria: JoinReceiver): Unit =
9191
applyToDsl(joinCriteria) { jc ->
92-
fullJoin(table, alias, jc.onJoinCriterion(), jc.andJoinCriteria)
92+
fullJoin(table, alias, jc.initialCriterion(), jc.subCriteria)
9393
}
9494

9595
fun fullJoin(
9696
subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit,
9797
joinCriteria: JoinReceiver
9898
): Unit =
9999
applyToDsl(subQuery, joinCriteria) { sq, jc ->
100-
fullJoin(sq, sq.correlationName, jc.onJoinCriterion(), jc.andJoinCriteria)
100+
fullJoin(sq, sq.correlationName, jc.initialCriterion(), jc.subCriteria)
101101
}
102102

103103
fun leftJoin(table: SqlTable, joinCriteria: JoinReceiver): Unit =
104104
applyToDsl(joinCriteria) { jc ->
105-
leftJoin(table, jc.onJoinCriterion(), jc.andJoinCriteria)
105+
leftJoin(table, jc.initialCriterion(), jc.subCriteria)
106106
}
107107

108108
fun leftJoin(table: SqlTable, alias: String, joinCriteria: JoinReceiver): Unit =
109109
applyToDsl(joinCriteria) { jc ->
110-
leftJoin(table, alias, jc.onJoinCriterion(), jc.andJoinCriteria)
110+
leftJoin(table, alias, jc.initialCriterion(), jc.subCriteria)
111111
}
112112

113113
fun leftJoin(
114114
subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit,
115115
joinCriteria: JoinReceiver
116116
): Unit =
117117
applyToDsl(subQuery, joinCriteria) { sq, jc ->
118-
leftJoin(sq, sq.correlationName, jc.onJoinCriterion(), jc.andJoinCriteria)
118+
leftJoin(sq, sq.correlationName, jc.initialCriterion(), jc.subCriteria)
119119
}
120120

121121
fun rightJoin(table: SqlTable, joinCriteria: JoinReceiver): Unit =
122122
applyToDsl(joinCriteria) { jc ->
123-
rightJoin(table, jc.onJoinCriterion(), jc.andJoinCriteria)
123+
rightJoin(table, jc.initialCriterion(), jc.subCriteria)
124124
}
125125

126126
fun rightJoin(table: SqlTable, alias: String, joinCriteria: JoinReceiver): Unit =
127127
applyToDsl(joinCriteria) { jc ->
128-
rightJoin(table, alias, jc.onJoinCriterion(), jc.andJoinCriteria)
128+
rightJoin(table, alias, jc.initialCriterion(), jc.subCriteria)
129129
}
130130

131131
fun rightJoin(
132132
subQuery: KotlinQualifiedSubQueryBuilder.() -> Unit,
133133
joinCriteria: JoinReceiver
134134
): Unit =
135135
applyToDsl(subQuery, joinCriteria) { sq, jc ->
136-
rightJoin(sq, sq.correlationName, jc.onJoinCriterion(), jc.andJoinCriteria)
136+
rightJoin(sq, sq.correlationName, jc.initialCriterion(), jc.subCriteria)
137137
}
138138

139139
private fun applyToDsl(joinCriteria: JoinReceiver, applyJoin: D.(JoinCollector) -> Unit) {

0 commit comments

Comments
 (0)