
org.mybatis.dynamic.sql.util.kotlin.KotlinInsertHelpers.kt Maven / Gradle / Ivy
/*
* Copyright ${license.git.copyrightYears} the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.mybatis.dynamic.sql.util.kotlin
import org.mybatis.dynamic.sql.SqlColumn
import org.mybatis.dynamic.sql.insert.BatchInsertDSL
import org.mybatis.dynamic.sql.insert.GeneralInsertDSL
import org.mybatis.dynamic.sql.insert.GeneralInsertModel
import org.mybatis.dynamic.sql.insert.InsertDSL
import org.mybatis.dynamic.sql.insert.MultiRowInsertDSL
import org.mybatis.dynamic.sql.util.Buildable
typealias GeneralInsertCompleter = @MyBatisDslMarker KotlinGeneralInsertBuilder.() -> Unit
typealias InsertCompleter = @MyBatisDslMarker InsertDSL.() -> Unit
typealias MultiRowInsertCompleter = @MyBatisDslMarker MultiRowInsertDSL.() -> Unit
typealias BatchInsertCompleter = @MyBatisDslMarker BatchInsertDSL.() -> Unit
typealias InsertSelectCompleter = @MyBatisDslMarker KotlinInsertSelectSubQueryBuilder.() -> Unit
@MyBatisDslMarker
class KotlinGeneralInsertBuilder(private val dsl: GeneralInsertDSL) : Buildable {
fun set(column: SqlColumn): GeneralInsertSetClauseFinisher = GeneralInsertSetClauseFinisher(column)
override fun build(): GeneralInsertModel = dsl.build()
@MyBatisDslMarker
inner class GeneralInsertSetClauseFinisher(private val column: SqlColumn) {
fun toNull(): KotlinGeneralInsertBuilder =
applyToDsl {
set(column).toNull()
}
fun toConstant(constant: String): KotlinGeneralInsertBuilder =
applyToDsl {
set(column).toConstant(constant)
}
fun toStringConstant(constant: String): KotlinGeneralInsertBuilder =
applyToDsl {
set(column).toStringConstant(constant)
}
fun toValue(value: T): KotlinGeneralInsertBuilder = toValue { value }
fun toValue(value: () -> T): KotlinGeneralInsertBuilder =
applyToDsl {
set(column).toValue(value)
}
fun toValueOrNull(value: T?): KotlinGeneralInsertBuilder = toValueOrNull { value }
fun toValueOrNull(value: () -> T?): KotlinGeneralInsertBuilder =
applyToDsl {
set(column).toValueOrNull(value)
}
fun toValueWhenPresent(value: T?): KotlinGeneralInsertBuilder = toValueWhenPresent { value }
fun toValueWhenPresent(value: () -> T?): KotlinGeneralInsertBuilder =
applyToDsl {
set(column).toValueWhenPresent(value)
}
private fun applyToDsl(block: GeneralInsertDSL.() -> Unit): KotlinGeneralInsertBuilder =
[email protected] {
dsl.apply(block)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy