Skip to content

Commit

Permalink
make CurrentDateTime a singleton (#1464)
Browse files Browse the repository at this point in the history
  • Loading branch information
naftalmm committed Mar 6, 2022
1 parent ee1b302 commit 2092d3b
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,16 @@ class Time<T : Temporal?>(val expr: Expression<T>) : Function<LocalTime>(JavaLoc
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder { append("Time(", expr, ")") }
}

class CurrentDateTime : Function<LocalDateTime>(JavaLocalDateTimeColumnType.INSTANCE) {
object CurrentDateTime : Function<LocalDateTime>(JavaLocalDateTimeColumnType.INSTANCE) {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
+when {
(currentDialect as? MysqlDialect)?.isFractionDateTimeSupported() == true -> "CURRENT_TIMESTAMP(6)"
else -> "CURRENT_TIMESTAMP"
}
}

@Deprecated("This class is now a singleton, no need for its constructor call; this method is provided for backward-compatibility only, and will be removed in future releases")
operator fun invoke() = this
}

class CurrentTimestamp<T : Temporal> : Expression<T>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class DefaultsTest : DatabaseTestsBase() {
object TableWithDBDefault : IntIdTable() {
var cIndex = 0
val field = varchar("field", 100)
val t1 = datetime("t1").defaultExpression(CurrentDateTime())
val t1 = datetime("t1").defaultExpression(CurrentDateTime)
val clientDefault = integer("clientDefault").clientDefault { cIndex++ }
}

Expand Down Expand Up @@ -144,7 +144,7 @@ class DefaultsTest : DatabaseTestsBase() {

@Test
fun testDefaults01() {
val currentDT = CurrentDateTime()
val currentDT = CurrentDateTime
val nowExpression = object : Expression<LocalDateTime>() {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
+when (val dialect = currentDialectTest) {
Expand Down Expand Up @@ -249,7 +249,7 @@ class DefaultsTest : DatabaseTestsBase() {

val foo = object : IntIdTable("foo") {
val name = text("name")
val defaultDateTime = datetime("defaultDateTime").defaultExpression(CurrentDateTime())
val defaultDateTime = datetime("defaultDateTime").defaultExpression(CurrentDateTime)
val defaultInt = integer("defaultInteger").defaultExpression(abs(-100))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ open class JavaTimeBaseTest : DatabaseTestsBase() {
@Test
fun testSQLiteDateTimeFieldRegression() {
val TestDate = object : IntIdTable("TestDate") {
val time = datetime("time").defaultExpression(CurrentDateTime())
val time = datetime("time").defaultExpression(CurrentDateTime)
}

withDb(TestDB.SQLITE) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,16 @@ class Date<T : DateTime?>(val expr: Expression<T>) : Function<DateTime>(DateColu
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder { append("DATE(", expr, ")") }
}

class CurrentDateTime : Function<DateTime>(DateColumnType(false)) {
object CurrentDateTime : Function<DateTime>(DateColumnType(false)) {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
+when {
(currentDialect as? MysqlDialect)?.isFractionDateTimeSupported() == true -> "CURRENT_TIMESTAMP(6)"
else -> "CURRENT_TIMESTAMP"
}
}

@Deprecated("This class is now a singleton, no need for its constructor call; this method is provided for backward-compatibility only, and will be removed in future releases")
operator fun invoke() = this
}

class Year<T : DateTime?>(val expr: Expression<T>) : Function<Int>(IntegerColumnType()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class JodaTimeDefaultsTest : JodaTimeBaseTest() {
object TableWithDBDefault : IntIdTable() {
var cIndex = 0
val field = varchar("field", 100)
val t1 = datetime("t1").defaultExpression(CurrentDateTime())
val t1 = datetime("t1").defaultExpression(CurrentDateTime)
val clientDefault = integer("clientDefault").clientDefault { cIndex++ }
}

Expand Down Expand Up @@ -137,7 +137,7 @@ class JodaTimeDefaultsTest : JodaTimeBaseTest() {

@Test
fun testDefaults01() {
val currentDT = CurrentDateTime()
val currentDT = CurrentDateTime
val nowExpression = object : Expression<DateTime>() {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
+when (val dialect = currentDialect) {
Expand Down Expand Up @@ -218,7 +218,7 @@ class JodaTimeDefaultsTest : JodaTimeBaseTest() {

val foo = object : IntIdTable("foo") {
val name = text("name")
val defaultDateTime = datetime("defaultDateTime").defaultExpression(CurrentDateTime())
val defaultDateTime = datetime("defaultDateTime").defaultExpression(CurrentDateTime)
val defaultInt = integer("defaultInteger").defaultExpression(abs(-100))
}

Expand All @@ -237,7 +237,7 @@ class JodaTimeDefaultsTest : JodaTimeBaseTest() {
fun testDefaultExpressions02() {
val foo = object : IntIdTable("foo") {
val name = text("name")
val defaultDateTime = datetime("defaultDateTime").defaultExpression(CurrentDateTime())
val defaultDateTime = datetime("defaultDateTime").defaultExpression(CurrentDateTime)
}

val nonDefaultDate = DateTime.parse("2000-01-01")
Expand Down Expand Up @@ -266,7 +266,7 @@ class JodaTimeDefaultsTest : JodaTimeBaseTest() {
@Test
fun defaultCurrentDateTimeTest() {
val TestDate = object : IntIdTable("TestDate") {
val time = datetime("time").defaultExpression(CurrentDateTime())
val time = datetime("time").defaultExpression(CurrentDateTime)
}

withTables(TestDate) {
Expand Down Expand Up @@ -297,7 +297,7 @@ class JodaTimeDefaultsTest : JodaTimeBaseTest() {
@Test
fun testSQLiteDateTimeFieldRegression() {
val TestDate = object : IntIdTable("TestDate") {
val time = datetime("time").defaultExpression(CurrentDateTime())
val time = datetime("time").defaultExpression(CurrentDateTime)
}

withDb(TestDB.SQLITE) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@ fun <T: Instant?> Date(expr: Expression<T>): Function<LocalDate> = DateInternal(
// override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder { append("Time(", expr, ")") }
//}

class CurrentDateTime : Function<LocalDateTime>(KotlinLocalDateTimeColumnType.INSTANCE) {
object CurrentDateTime : Function<LocalDateTime>(KotlinLocalDateTimeColumnType.INSTANCE) {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
+when {
(currentDialect as? MysqlDialect)?.isFractionDateTimeSupported() == true -> "CURRENT_TIMESTAMP(6)"
else -> "CURRENT_TIMESTAMP"
}
}

@Deprecated("This class is now a singleton, no need for its constructor call; this method is provided for backward-compatibility only, and will be removed in future releases")
operator fun invoke() = this
}

class CurrentTimestamp<T> : Expression<T>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class DefaultsTest : DatabaseTestsBase() {
object TableWithDBDefault : IntIdTable() {
var cIndex = 0
val field = varchar("field", 100)
val t1 = datetime("t1").defaultExpression(CurrentDateTime())
val t1 = datetime("t1").defaultExpression(CurrentDateTime)
val clientDefault = integer("clientDefault").clientDefault { cIndex++ }
}

Expand Down Expand Up @@ -154,7 +154,7 @@ class DefaultsTest : DatabaseTestsBase() {

@Test
fun testDefaults01() {
val currentDT = CurrentDateTime()
val currentDT = CurrentDateTime
val nowExpression = object : Expression<LocalDateTime>() {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
+when (val dialect = currentDialectTest) {
Expand Down Expand Up @@ -261,7 +261,7 @@ class DefaultsTest : DatabaseTestsBase() {

val foo = object : IntIdTable("foo") {
val name = text("name")
val defaultDateTime = datetime("defaultDateTime").defaultExpression(CurrentDateTime())
val defaultDateTime = datetime("defaultDateTime").defaultExpression(CurrentDateTime)
val defaultInt = integer("defaultInteger").defaultExpression(abs(-100))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ open class KotlinTimeBaseTest : DatabaseTestsBase() {
@Test
fun testSQLiteDateTimeFieldRegression() {
val TestDate = object : IntIdTable("TestDate") {
val time = datetime("time").defaultExpression(CurrentDateTime())
val time = datetime("time").defaultExpression(CurrentDateTime)
}

withDb(TestDB.SQLITE) {
Expand Down

0 comments on commit 2092d3b

Please sign in to comment.