jkbbwr
09/19/2017, 12:36 PMimport org.jetbrains.exposed.dao.*
import org.jetbrains.exposed.sql.Column
import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.transactions.transaction
import org.jetbrains.exposed.sql.SchemaUtils.create
import org.jetbrains.exposed.sql.StdOutSqlLogger
import org.jetbrains.exposed.sql.transactions.DEFAULT_ISOLATION_LEVEL
import org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManager
import org.jetbrains.exposed.sql.transactions.TransactionManager
import java.sql.Connection.TRANSACTION_READ_UNCOMMITTED
import java.util.*
open class UUIDIdTable(name: String = "", columnName: String = "id") : IdTable<UUID>(name) {
override val id: Column<EntityID<UUID>> = uuid(columnName).primaryKey().entityId()
}
abstract class UUIDEntity(id: EntityID<UUID>) : Entity<UUID>(id)
abstract class UUIDEntityClass<out E : UUIDEntity>(table: IdTable<UUID>, entityType: Class<E>? = null) : EntityClass<UUID, E>(table, entityType)
object User : UUIDIdTable("user") {
val email = text("email")
val password = text("password")
}
class UserModel(id: EntityID<UUID>) : UUIDEntity(id) {
companion object : UUIDEntityClass<UserModel>(User)
var email by User.email
var password by User.password
}
fun main(args: Array<String>) {
Database.connect("jdbc:sqlite:test.db", driver = "org.sqlite.JDBC", manager = {
ThreadLocalTransactionManager(it, TRANSACTION_READ_UNCOMMITTED)
})
transaction {
logger.addLogger(StdOutSqlLogger)
create(User)
UserModel.new {
email = "jkbbwr"
password = "password123"
}
}
}