Skip to content

Commit a15b928

Browse files
refactor bulk insert dsl builder
1 parent 2b53149 commit a15b928

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/BulkInsert.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ public data class BulkInsertExpression(
8787
* @see batchInsert
8888
*/
8989
public fun <T : BaseTable<*>> Database.bulkInsert(
90-
table: T, block: BulkInsertStatementBuilder<T>.() -> Unit
90+
table: T, block: BulkInsertStatementBuilder<T>.(T) -> Unit
9191
): Int {
92-
val builder = BulkInsertStatementBuilder(table).apply(block)
92+
val builder = BulkInsertStatementBuilder(table).apply { block(table) }
9393
val expression = BulkInsertExpression(table.asExpression(), builder.assignments)
9494
return executeUpdate(expression)
9595
}
@@ -139,9 +139,9 @@ public fun <T : BaseTable<*>> Database.bulkInsert(
139139
* @see bulkInsert
140140
*/
141141
public fun <T : BaseTable<*>> Database.bulkInsertOrUpdate(
142-
table: T, block: BulkInsertOrUpdateStatementBuilder<T>.() -> Unit
142+
table: T, block: BulkInsertOrUpdateStatementBuilder<T>.(T) -> Unit
143143
): Int {
144-
val builder = BulkInsertOrUpdateStatementBuilder(table).apply(block)
144+
val builder = BulkInsertOrUpdateStatementBuilder(table).apply { block(table) }
145145

146146
val primaryKeys = table.primaryKeys
147147
if (primaryKeys.isEmpty() && builder.conflictColumns.isEmpty()) {
@@ -171,9 +171,8 @@ public open class BulkInsertStatementBuilder<T : BaseTable<*>>(internal val tabl
171171
/**
172172
* Add the assignments of a new row to the bulk insert.
173173
*/
174-
public fun item(block: AssignmentsBuilder.(T) -> Unit) {
175-
val builder = PostgreSqlAssignmentsBuilder()
176-
builder.block(table)
174+
public fun item(block: AssignmentsBuilder.() -> Unit) {
175+
val builder = PostgreSqlAssignmentsBuilder().apply(block)
177176

178177
if (assignments.isEmpty()
179178
|| assignments[0].map { it.column.name } == builder.assignments.map { it.column.name }
@@ -196,9 +195,8 @@ public class BulkInsertOrUpdateStatementBuilder<T : BaseTable<*>>(table: T) : Bu
196195
/**
197196
* Specify the update assignments while any key conflict exists.
198197
*/
199-
public fun onConflict(vararg columns: Column<*>, block: AssignmentsBuilder.(T) -> Unit) {
200-
val builder = PostgreSqlAssignmentsBuilder()
201-
builder.block(table)
198+
public fun onConflict(vararg columns: Column<*>, block: AssignmentsBuilder.() -> Unit) {
199+
val builder = PostgreSqlAssignmentsBuilder().apply(block)
202200
updateAssignments += builder.assignments
203201
conflictColumns += columns
204202
}

ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/PostgreSqlTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ class PostgreSqlTest : BaseTest() {
130130
set(it.salary, 1000)
131131
set(it.hireDate, LocalDate.now())
132132
set(it.departmentId, 1)
133-
onConflict {
133+
onConflict(it.id) {
134134
set(it.salary, it.salary + 1000)
135135
}
136136
}
@@ -180,7 +180,7 @@ class PostgreSqlTest : BaseTest() {
180180
set(it.hireDate, LocalDate.now())
181181
set(it.departmentId, 1)
182182
}
183-
onConflict {
183+
onConflict(it.id) {
184184
set(it.salary, it.salary + 1000)
185185
}
186186
}

0 commit comments

Comments
 (0)