Skip to content

Commit 60eab15

Browse files
authored
Improving KJoinDeclaration (#1110)
* Add shortage methods to KJoinDeclaration * Add test for KJoinDeclaration
1 parent 5496aad commit 60eab15

File tree

2 files changed

+562
-8
lines changed

2 files changed

+562
-8
lines changed
Lines changed: 181 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,216 @@
11
package org.seasar.doma.kotlin.jdbc.criteria.declaration
22

3+
import org.seasar.doma.jdbc.criteria.context.SubSelectContext
34
import org.seasar.doma.jdbc.criteria.declaration.JoinDeclaration
5+
import org.seasar.doma.jdbc.criteria.declaration.SubSelectFromDeclaration
6+
import org.seasar.doma.jdbc.criteria.metamodel.EntityMetamodel
47
import org.seasar.doma.jdbc.criteria.metamodel.PropertyMetamodel
8+
import org.seasar.doma.jdbc.criteria.option.LikeOption
9+
import org.seasar.doma.jdbc.criteria.tuple.Tuple2
10+
import org.seasar.doma.jdbc.criteria.tuple.Tuple3
511

612
class KJoinDeclaration(private val declaration: JoinDeclaration) {
13+
fun <PROPERTY> eq(left: PropertyMetamodel<PROPERTY>, right: PROPERTY) {
14+
declaration.eq(left, right)
15+
}
716

817
fun <PROPERTY> eq(left: PropertyMetamodel<PROPERTY>, right: PropertyMetamodel<PROPERTY>) {
918
declaration.eq(left, right)
1019
}
1120

21+
fun <PROPERTY> ne(left: PropertyMetamodel<PROPERTY>, right: PROPERTY) {
22+
declaration.ne(left, right)
23+
}
24+
1225
fun <PROPERTY> ne(left: PropertyMetamodel<PROPERTY>, right: PropertyMetamodel<PROPERTY>) {
1326
declaration.ne(left, right)
1427
}
1528

16-
fun <PROPERTY> ge(left: PropertyMetamodel<PROPERTY>, right: PropertyMetamodel<PROPERTY>) {
17-
declaration.ge(left, right)
29+
fun <PROPERTY> gt(left: PropertyMetamodel<PROPERTY>, right: PROPERTY) {
30+
declaration.gt(left, right)
1831
}
1932

2033
fun <PROPERTY> gt(left: PropertyMetamodel<PROPERTY>, right: PropertyMetamodel<PROPERTY>) {
2134
declaration.gt(left, right)
2235
}
2336

24-
fun <PROPERTY> le(left: PropertyMetamodel<PROPERTY>, right: PropertyMetamodel<PROPERTY>) {
25-
declaration.le(left, right)
37+
fun <PROPERTY> ge(left: PropertyMetamodel<PROPERTY>, right: PROPERTY) {
38+
declaration.ge(left, right)
39+
}
40+
41+
fun <PROPERTY> ge(left: PropertyMetamodel<PROPERTY>, right: PropertyMetamodel<PROPERTY>) {
42+
declaration.ge(left, right)
43+
}
44+
45+
fun <PROPERTY> lt(left: PropertyMetamodel<PROPERTY>, right: PROPERTY) {
46+
declaration.lt(left, right)
2647
}
2748

2849
fun <PROPERTY> lt(left: PropertyMetamodel<PROPERTY>, right: PropertyMetamodel<PROPERTY>) {
2950
declaration.lt(left, right)
3051
}
3152

53+
fun <PROPERTY> le(left: PropertyMetamodel<PROPERTY>, right: PROPERTY) {
54+
declaration.le(left, right)
55+
}
56+
57+
fun <PROPERTY> le(left: PropertyMetamodel<PROPERTY>, right: PropertyMetamodel<PROPERTY>) {
58+
declaration.le(left, right)
59+
}
60+
3261
fun <PROPERTY> isNull(propertyMetamodel: PropertyMetamodel<PROPERTY>) {
3362
declaration.isNull(propertyMetamodel)
3463
}
3564

3665
fun <PROPERTY> isNotNull(propertyMetamodel: PropertyMetamodel<PROPERTY>) {
3766
declaration.isNotNull(propertyMetamodel)
3867
}
68+
69+
fun <PROPERTY> eqOrIsNull(left: PropertyMetamodel<PROPERTY>, right: PROPERTY) {
70+
declaration.eqOrIsNull(left, right)
71+
}
72+
73+
fun <PROPERTY> neOrIsNotNull(left: PropertyMetamodel<PROPERTY>, right: PROPERTY) {
74+
declaration.neOrIsNotNull(left, right)
75+
}
76+
77+
fun <PROPERTY> like(left: PropertyMetamodel<PROPERTY>, right: CharSequence) {
78+
declaration.like(left, right)
79+
}
80+
81+
fun <PROPERTY> like(left: PropertyMetamodel<PROPERTY>, right: CharSequence, option: LikeOption) {
82+
declaration.like(left, right, option)
83+
}
84+
85+
fun <PROPERTY> notLike(left: PropertyMetamodel<PROPERTY>, right: CharSequence) {
86+
declaration.notLike(left, right)
87+
}
88+
89+
fun <PROPERTY> notLike(left: PropertyMetamodel<PROPERTY>, right: CharSequence, option: LikeOption) {
90+
declaration.notLike(left, right, option)
91+
}
92+
93+
fun <PROPERTY> between(propertyMetamodel: PropertyMetamodel<PROPERTY>, start: PROPERTY, end: PROPERTY) {
94+
declaration.between(propertyMetamodel, start, end)
95+
}
96+
97+
fun <PROPERTY> `in`(left: PropertyMetamodel<PROPERTY>, right: List<PROPERTY>) {
98+
declaration.`in`(left, right)
99+
}
100+
101+
fun <PROPERTY> notIn(left: PropertyMetamodel<PROPERTY>, right: List<PROPERTY>) {
102+
declaration.notIn(left, right)
103+
}
104+
105+
fun <PROPERTY> `in`(
106+
left: PropertyMetamodel<PROPERTY>,
107+
right: SubSelectContext<PropertyMetamodel<PROPERTY>>,
108+
) {
109+
declaration.`in`(left, right)
110+
}
111+
112+
fun <PROPERTY> notIn(
113+
left: PropertyMetamodel<PROPERTY>,
114+
right: SubSelectContext<PropertyMetamodel<PROPERTY>>,
115+
) {
116+
declaration.notIn(left, right)
117+
}
118+
119+
fun <PROPERTY1, PROPERTY2> `in`(
120+
left: Tuple2<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>>,
121+
right: List<Tuple2<PROPERTY1, PROPERTY2>>,
122+
) {
123+
declaration.`in`(left, right)
124+
}
125+
126+
fun <PROPERTY1, PROPERTY2> notIn(
127+
left: Tuple2<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>>,
128+
right: List<Tuple2<PROPERTY1, PROPERTY2>>,
129+
) {
130+
declaration.notIn(left, right)
131+
}
132+
133+
fun <PROPERTY1, PROPERTY2> `in`(
134+
left: Tuple2<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>>,
135+
right: SubSelectContext<Tuple2<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>>>,
136+
) {
137+
declaration.`in`(left, right)
138+
}
139+
140+
fun <PROPERTY1, PROPERTY2> notIn(
141+
left: Tuple2<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>>,
142+
right: SubSelectContext<Tuple2<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>>>,
143+
) {
144+
declaration.notIn(left, right)
145+
}
146+
147+
fun <PROPERTY1, PROPERTY2, PROPERTY3> `in`(
148+
left: Tuple3<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>, PropertyMetamodel<PROPERTY3>>,
149+
right: List<Tuple3<PROPERTY1, PROPERTY2, PROPERTY3>>,
150+
) {
151+
declaration.`in`(left, right)
152+
}
153+
154+
fun <PROPERTY1, PROPERTY2, PROPERTY3> notIn(
155+
left: Tuple3<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>, PropertyMetamodel<PROPERTY3>>,
156+
right: List<Tuple3<PROPERTY1, PROPERTY2, PROPERTY3>>,
157+
) {
158+
declaration.notIn(left, right)
159+
}
160+
161+
fun <PROPERTY1, PROPERTY2, PROPERTY3> `in`(
162+
left: Tuple3<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>, PropertyMetamodel<PROPERTY3>>,
163+
right: SubSelectContext<Tuple3<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>, PropertyMetamodel<PROPERTY3>>>,
164+
) {
165+
declaration.`in`(left, right)
166+
}
167+
168+
fun <PROPERTY1, PROPERTY2, PROPERTY3> notIn(
169+
left: Tuple3<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>, PropertyMetamodel<PROPERTY3>>,
170+
right: SubSelectContext<Tuple3<PropertyMetamodel<PROPERTY1>, PropertyMetamodel<PROPERTY2>, PropertyMetamodel<PROPERTY3>>>,
171+
) {
172+
declaration.notIn(left, right)
173+
}
174+
175+
fun exists(
176+
subSelectContext: SubSelectContext<*>,
177+
) {
178+
declaration.exists(subSelectContext)
179+
}
180+
181+
fun notExists(
182+
subSelectContext: SubSelectContext<*>,
183+
) {
184+
declaration.notExists(subSelectContext)
185+
}
186+
187+
fun <ENTITY> from(
188+
entityMetamodel: EntityMetamodel<ENTITY>,
189+
): SubSelectFromDeclaration<ENTITY> {
190+
return declaration.from(entityMetamodel)
191+
}
192+
193+
fun and(
194+
block: KJoinDeclaration.() -> Unit,
195+
) {
196+
return declaration.and {
197+
block()
198+
}
199+
}
200+
201+
fun or(
202+
block: KJoinDeclaration.() -> Unit,
203+
) {
204+
return declaration.or {
205+
block()
206+
}
207+
}
208+
209+
fun not(
210+
block: KJoinDeclaration.() -> Unit,
211+
) {
212+
return declaration.not {
213+
block()
214+
}
215+
}
39216
}

0 commit comments

Comments
 (0)