46 lines
1.3 KiB
Kotlin
46 lines
1.3 KiB
Kotlin
package dev.inmo.micro_utils.repos
|
|
|
|
sealed class ColumnType(
|
|
typeName: String,
|
|
nullable: Boolean
|
|
) {
|
|
open val asType: String = "$typeName${if (!nullable) " not null" else ""}"
|
|
sealed class Text(
|
|
nullable: Boolean
|
|
) : ColumnType("text", nullable) {
|
|
object NULLABLE : Text(true)
|
|
object NOT_NULLABLE : Text(false)
|
|
}
|
|
sealed class Numeric(
|
|
typeName: String,
|
|
autoincrement: Boolean = false,
|
|
primaryKey: Boolean = false,
|
|
nullable: Boolean = false
|
|
) : ColumnType(
|
|
typeName,
|
|
nullable
|
|
) {
|
|
override val asType: String = "${super.asType}${if (primaryKey) " primary key" else ""}${if (autoincrement) " autoincrement" else ""}"
|
|
|
|
class INTEGER(
|
|
autoincrement: Boolean = false,
|
|
primaryKey: Boolean = false,
|
|
nullable: Boolean = false
|
|
) : Numeric(
|
|
"integer",
|
|
autoincrement,
|
|
primaryKey,
|
|
nullable
|
|
)
|
|
class DOUBLE(autoincrement: Boolean = false, primaryKey: Boolean = false, nullable: Boolean = false) : Numeric(
|
|
"double",
|
|
autoincrement,
|
|
primaryKey,
|
|
nullable
|
|
)
|
|
}
|
|
|
|
override fun toString(): String {
|
|
return asType
|
|
}
|
|
} |