Skip to content

Commit 67d34ea

Browse files
committed
Add support for returning in the Kotlin Query DSL API
1 parent 8e1f823 commit 67d34ea

File tree

14 files changed

+239
-20
lines changed

14 files changed

+239
-20
lines changed

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/KEntityql.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,12 @@ import org.seasar.doma.jdbc.criteria.metamodel.EntityMetamodel
2626
import org.seasar.doma.kotlin.jdbc.criteria.statement.KEntityqlBatchDeleteStatement
2727
import org.seasar.doma.kotlin.jdbc.criteria.statement.KEntityqlBatchInsertStatement
2828
import org.seasar.doma.kotlin.jdbc.criteria.statement.KEntityqlBatchUpdateStatement
29-
import org.seasar.doma.kotlin.jdbc.criteria.statement.KEntityqlDeleteStatement
3029
import org.seasar.doma.kotlin.jdbc.criteria.statement.KEntityqlInsertStatement
3130
import org.seasar.doma.kotlin.jdbc.criteria.statement.KEntityqlMultiInsertStatement
3231
import org.seasar.doma.kotlin.jdbc.criteria.statement.KEntityqlSelectStarting
33-
import org.seasar.doma.kotlin.jdbc.criteria.statement.KEntityqlUpdateStatement
3432
import org.seasar.doma.kotlin.jdbc.criteria.statement.KSetOperand
3533
import org.seasar.doma.kotlin.jdbc.criteria.statement.KStatement
34+
import org.seasar.doma.kotlin.jdbc.criteria.statement.KStatementAdapter
3635

3736
@Suppress("DEPRECATION")
3837
@Deprecated(
@@ -66,7 +65,7 @@ class KEntityql(config: Config) {
6665
block: UpdateSettings.() -> Unit = {},
6766
): KStatement<Result<ENTITY>> {
6867
val statement = entityql.update(entityMetamodel, entity, block)
69-
return KEntityqlUpdateStatement(statement)
68+
return KStatementAdapter(statement)
7069
}
7170

7271
fun <ENTITY : Any> delete(
@@ -75,7 +74,7 @@ class KEntityql(config: Config) {
7574
block: DeleteSettings.() -> Unit = {},
7675
): KStatement<Result<ENTITY>> {
7776
val statement = entityql.delete(entityMetamodel, entity, block)
78-
return KEntityqlDeleteStatement(statement)
77+
return KStatementAdapter(statement)
7978
}
8079

8180
fun <ENTITY : Any> insert(

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/statement/KEntityqlDeleteStatement.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,15 @@ package org.seasar.doma.kotlin.jdbc.criteria.statement
1717

1818
import org.seasar.doma.jdbc.Result
1919
import org.seasar.doma.jdbc.Sql
20-
import org.seasar.doma.jdbc.criteria.statement.Statement
20+
import org.seasar.doma.jdbc.criteria.metamodel.PropertyMetamodel
21+
import org.seasar.doma.jdbc.criteria.statement.EntityqlDeleteStatement
2122

22-
class KEntityqlDeleteStatement<ENTITY>(private val statement: Statement<Result<ENTITY>>) : KStatement<Result<ENTITY>> {
23+
class KEntityqlDeleteStatement<ENTITY>(private val statement: EntityqlDeleteStatement<ENTITY>) : KStatement<Result<ENTITY>> {
24+
25+
fun returning(vararg properties: PropertyMetamodel<*>): KStatement<Result<ENTITY>> {
26+
val s = statement.returning(*properties)
27+
return KStatementAdapter(s)
28+
}
2329

2430
override fun execute(): Result<ENTITY> {
2531
return statement.execute()

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/statement/KEntityqlInsertStatement.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,26 @@ package org.seasar.doma.kotlin.jdbc.criteria.statement
1717

1818
import org.seasar.doma.jdbc.Result
1919
import org.seasar.doma.jdbc.Sql
20+
import org.seasar.doma.jdbc.criteria.metamodel.PropertyMetamodel
2021
import org.seasar.doma.jdbc.criteria.statement.EntityqlInsertStatement
2122

2223
class KEntityqlInsertStatement<ENTITY>(
2324
private val statement: EntityqlInsertStatement<ENTITY>,
2425
) : KStatement<Result<ENTITY>> {
2526

26-
fun onDuplicateKeyUpdate(): KStatement<Result<ENTITY>> {
27+
fun onDuplicateKeyUpdate(): KEntityqlUpsertStatement<ENTITY> {
2728
return KEntityqlUpsertStatement(statement.onDuplicateKeyUpdate())
2829
}
2930

30-
fun onDuplicateKeyIgnore(): KStatement<Result<ENTITY>> {
31+
fun onDuplicateKeyIgnore(): KEntityqlUpsertStatement<ENTITY> {
3132
return KEntityqlUpsertStatement(statement.onDuplicateKeyIgnore())
3233
}
3334

35+
fun returning(vararg properties: PropertyMetamodel<*>): KStatement<Result<ENTITY>> {
36+
val s = statement.returning(*properties)
37+
return KStatementAdapter(s)
38+
}
39+
3440
override fun execute(): Result<ENTITY> {
3541
return statement.execute()
3642
}

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/statement/KEntityqlMultiInsertStatement.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,26 @@ package org.seasar.doma.kotlin.jdbc.criteria.statement
1717

1818
import org.seasar.doma.jdbc.MultiResult
1919
import org.seasar.doma.jdbc.Sql
20+
import org.seasar.doma.jdbc.criteria.metamodel.PropertyMetamodel
2021
import org.seasar.doma.jdbc.criteria.statement.EntityqlMultiInsertStatement
2122

2223
class KEntityqlMultiInsertStatement<ENTITY>(
2324
private val statement: EntityqlMultiInsertStatement<ENTITY>,
2425
) : KStatement<MultiResult<ENTITY>> {
2526

26-
fun onDuplicateKeyUpdate(): KStatement<MultiResult<ENTITY>> {
27+
fun onDuplicateKeyUpdate(): KEntityqlMultiUpsertStatement<ENTITY> {
2728
return KEntityqlMultiUpsertStatement(statement.onDuplicateKeyUpdate())
2829
}
2930

30-
fun onDuplicateKeyIgnore(): KStatement<MultiResult<ENTITY>> {
31+
fun onDuplicateKeyIgnore(): KEntityqlMultiUpsertStatement<ENTITY> {
3132
return KEntityqlMultiUpsertStatement(statement.onDuplicateKeyIgnore())
3233
}
3334

35+
fun returning(vararg properties: PropertyMetamodel<*>): KStatement<MultiResult<ENTITY>> {
36+
val s = statement.returning(*properties)
37+
return KStatementAdapter(s)
38+
}
39+
3440
override fun execute(): MultiResult<ENTITY> {
3541
return statement.execute()
3642
}

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/statement/KEntityqlMultiUpsertStatement.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,16 @@ package org.seasar.doma.kotlin.jdbc.criteria.statement
1717

1818
import org.seasar.doma.jdbc.MultiResult
1919
import org.seasar.doma.jdbc.Sql
20-
import org.seasar.doma.jdbc.criteria.statement.Statement
20+
import org.seasar.doma.jdbc.criteria.metamodel.PropertyMetamodel
21+
import org.seasar.doma.jdbc.criteria.statement.EntityqlMultiInsertIntermediate
2122

22-
class KEntityqlMultiUpsertStatement<ENTITY>(private val statement: Statement<MultiResult<ENTITY>>) : KStatement<MultiResult<ENTITY>> {
23+
class KEntityqlMultiUpsertStatement<ENTITY>(private val statement: EntityqlMultiInsertIntermediate<ENTITY>) :
24+
KStatement<MultiResult<ENTITY>> {
25+
26+
fun returning(vararg properties: PropertyMetamodel<*>): KStatement<MultiResult<ENTITY>> {
27+
val s = statement.returning(*properties)
28+
return KStatementAdapter(s)
29+
}
2330

2431
override fun execute(): MultiResult<ENTITY> {
2532
return statement.execute()

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/statement/KEntityqlUpdateStatement.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,15 @@ package org.seasar.doma.kotlin.jdbc.criteria.statement
1717

1818
import org.seasar.doma.jdbc.Result
1919
import org.seasar.doma.jdbc.Sql
20-
import org.seasar.doma.jdbc.criteria.statement.Statement
20+
import org.seasar.doma.jdbc.criteria.metamodel.PropertyMetamodel
21+
import org.seasar.doma.jdbc.criteria.statement.EntityqlUpdateStatement
2122

22-
class KEntityqlUpdateStatement<ENTITY>(private val statement: Statement<Result<ENTITY>>) : KStatement<Result<ENTITY>> {
23+
class KEntityqlUpdateStatement<ENTITY>(private val statement: EntityqlUpdateStatement<ENTITY>) : KStatement<Result<ENTITY>> {
24+
25+
fun returning(vararg properties: PropertyMetamodel<*>): KStatement<Result<ENTITY>> {
26+
val s = statement.returning(*properties)
27+
return KStatementAdapter(s)
28+
}
2329

2430
override fun execute(): Result<ENTITY> {
2531
return statement.execute()

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/statement/KEntityqlUpsertStatement.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,15 @@ package org.seasar.doma.kotlin.jdbc.criteria.statement
1717

1818
import org.seasar.doma.jdbc.Result
1919
import org.seasar.doma.jdbc.Sql
20-
import org.seasar.doma.jdbc.criteria.statement.Statement
20+
import org.seasar.doma.jdbc.criteria.metamodel.PropertyMetamodel
21+
import org.seasar.doma.jdbc.criteria.statement.EntityqlInsertIntermediate
2122

22-
class KEntityqlUpsertStatement<ENTITY>(private val statement: Statement<Result<ENTITY>>) : KStatement<Result<ENTITY>> {
23+
class KEntityqlUpsertStatement<ENTITY>(private val statement: EntityqlInsertIntermediate<ENTITY>) : KStatement<Result<ENTITY>> {
24+
25+
fun returning(vararg properties: PropertyMetamodel<*>): KStatement<Result<ENTITY>> {
26+
val s = statement.returning(*properties)
27+
return KStatementAdapter(s)
28+
}
2329

2430
override fun execute(): Result<ENTITY> {
2531
return statement.execute()
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright Doma Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.seasar.doma.kotlin.jdbc.criteria.statement
17+
18+
import org.seasar.doma.jdbc.Sql
19+
import org.seasar.doma.jdbc.criteria.statement.Statement
20+
21+
class KStatementAdapter<RESULT>(private val statement: Statement<RESULT>) : KStatement<RESULT> {
22+
override fun execute(): RESULT {
23+
return statement.execute()
24+
}
25+
26+
override fun asSql(): Sql<*> {
27+
return statement.asSql()
28+
}
29+
}

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/statement/KUnifiedDeleteStarting.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@
1616
package org.seasar.doma.kotlin.jdbc.criteria.statement
1717

1818
import org.seasar.doma.jdbc.BatchResult
19-
import org.seasar.doma.jdbc.Result
2019
import org.seasar.doma.jdbc.criteria.statement.UnifiedDeleteStarting
2120
import org.seasar.doma.kotlin.jdbc.criteria.declaration.KWhereDeclaration
2221

2322
class KUnifiedDeleteStarting<ENTITY : Any>(private val statement: UnifiedDeleteStarting<ENTITY>) {
2423

25-
fun single(entity: ENTITY): KStatement<Result<ENTITY>> {
24+
fun single(entity: ENTITY): KEntityqlDeleteStatement<ENTITY> {
2625
return KEntityqlDeleteStatement(statement.single(entity))
2726
}
2827

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/statement/KUnifiedUpdateStarting.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@
1616
package org.seasar.doma.kotlin.jdbc.criteria.statement
1717

1818
import org.seasar.doma.jdbc.BatchResult
19-
import org.seasar.doma.jdbc.Result
2019
import org.seasar.doma.jdbc.criteria.statement.UnifiedUpdateStarting
2120
import org.seasar.doma.kotlin.jdbc.criteria.declaration.KSetDeclaration
2221

2322
class KUnifiedUpdateStarting<ENTITY : Any>(private val statement: UnifiedUpdateStarting<ENTITY>) {
2423

25-
fun single(entity: ENTITY): KStatement<Result<ENTITY>> {
24+
fun single(entity: ENTITY): KEntityqlUpdateStatement<ENTITY> {
2625
return KEntityqlUpdateStatement(statement.single(entity))
2726
}
2827

0 commit comments

Comments
 (0)