All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sxtanna.database.task.builder.base.TargetedStatement.kt Maven / Gradle / Ivy

package com.sxtanna.database.task.builder.base

import com.sxtanna.database.struct.obj.Target
import com.sxtanna.database.struct.obj.Target.Position
import com.sxtanna.database.struct.obj.Target.Position.*
import com.sxtanna.database.type.base.SqlObject

abstract class TargetedStatement> : BuilderStatement() {

	val where = mutableListOf()


	@JvmOverloads
	fun like(column : String, value : Any, option : Position, not : Boolean = false) = impl().apply { where.add(Target.like(column, value, option, not)) }


	@JvmOverloads
	fun startsWith(column : String, value : Any, not : Boolean = false) = like(column, value, START, not)

	@JvmSynthetic
	@JvmName("inStartsWith")
	infix fun String.startsWith(value : Any) = startsWith(this, value, false)

	@JvmSynthetic
	infix fun String.startsNotWith(value : Any) = startsWith(this, value, true)


	@JvmOverloads
	fun contains(column : String, value : Any, not : Boolean = false) = like(column, value, CONTAINS, not)

	@JvmSynthetic
	@JvmName("inContains")
	infix fun String.contains(value : Any) = contains(this, value, false)

	@JvmSynthetic
	infix fun String.containsNot(value : Any) = contains(this, value, true)


	@JvmOverloads
	fun endsWith(column : String, value : Any, not : Boolean = false) = like(column, value, END, not)

	@JvmSynthetic
	@JvmName("inEndsWith")
	infix fun String.endsWith(value : Any) = endsWith(this, value, false)

	@JvmSynthetic
	infix fun String.endsNotWith(value : Any) = endsWith(this, value, true)


	@JvmOverloads
	fun equals(column : String, value : Any, not : Boolean = false) = impl().apply { where.add(Target.equals(column, value, not)) }

	@JvmSynthetic
	@JvmName("inEquals")
	infix fun String.equals(value : Any) = equals(this, value, false)

	@JvmSynthetic
	infix fun String.equalsNot(value : Any) = equals(this, value, true)


	@JvmOverloads
	fun between(column : String, first : Any, second : Any, not : Boolean = false) = impl().apply { where.add(Target.between(column, first, second, not)) }

	@JvmSynthetic
	infix fun String.between(data : Pair) = between(this, data.first, data.second, false)

	@JvmSynthetic
	infix fun String.notBetween(data : Pair) = between(this, data.first, data.second, true)


	fun lesser(column : String, value : Any, orEqual : Boolean) = impl().apply { where.add(Target.lesser(column, value, orEqual)) }

	@JvmSynthetic
	infix fun String.lesser(value : Any) = lesser(this, value, false)

	@JvmSynthetic
	infix fun String.lesserOrEqual(value : Any) = lesser(this, value, true)


	fun greater(column : String, value : Any, orEqual : Boolean) = impl().apply { where.add(Target.greater(column, value, orEqual)) }

	@JvmSynthetic
	infix fun String.greater(value : Any) = greater(this, value, false)

	@JvmSynthetic
	infix fun String.greaterOrEqual(value : Any) = greater(this, value, true)


	abstract protected fun impl() : W

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy