From 422aa5c6348828b461aae70209fcc25f97935516 Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Wed, 7 Dec 2016 00:33:46 -0800 Subject: add column type mapper for UUID <-> core.Id[_] --- src/main/scala/xyz/driver/core/database.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main/scala/xyz') diff --git a/src/main/scala/xyz/driver/core/database.scala b/src/main/scala/xyz/driver/core/database.scala index d948be7..cf19c34 100644 --- a/src/main/scala/xyz/driver/core/database.scala +++ b/src/main/scala/xyz/driver/core/database.scala @@ -33,8 +33,9 @@ object database { } trait ColumnTypes { - val profile: JdbcProfile + import java.util.UUID + val profile: JdbcProfile import profile.api._ implicit def `xyz.driver.core.Id.columnType`[T] = @@ -45,6 +46,9 @@ object database { implicit def `xyz.driver.core.time.Time.columnType` = MappedColumnType.base[Time, Long](_.millis, Time(_)) + + implicit def `java.util.UUID.columnType`[T] = + MappedColumnType.base[Id[T], UUID](id => UUID.fromString(id.value), uuid => Id[T](uuid.toString)) } trait DatabaseObject extends ColumnTypes { -- cgit v1.2.3 From ed39a5116a024b0d755cb44e41227c99f9dd694c Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Wed, 7 Dec 2016 00:34:39 -0800 Subject: fix column type mapper for serial id <-> core.Id[_] --- src/main/scala/xyz/driver/core/database.scala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/main/scala/xyz') diff --git a/src/main/scala/xyz/driver/core/database.scala b/src/main/scala/xyz/driver/core/database.scala index cf19c34..91c2305 100644 --- a/src/main/scala/xyz/driver/core/database.scala +++ b/src/main/scala/xyz/driver/core/database.scala @@ -38,16 +38,16 @@ object database { val profile: JdbcProfile import profile.api._ - implicit def `xyz.driver.core.Id.columnType`[T] = - MappedColumnType.base[Id[T], String](_.value, Id[T](_)) + implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] = + MappedColumnType.base[Id[T], Long](_.value.toLong, serialId => Id[T](serialId.toString)) - implicit def `xyz.driver.core.Name.columnType`[T] = + implicit def `xyz.driver.core.Name.columnType`[T]: BaseColumnType[Name[T]] = MappedColumnType.base[Name[T], String](_.value, Name[T](_)) - implicit def `xyz.driver.core.time.Time.columnType` = + implicit def `xyz.driver.core.time.Time.columnType`: BaseColumnType[Time] = MappedColumnType.base[Time, Long](_.millis, Time(_)) - implicit def `java.util.UUID.columnType`[T] = + implicit def `java.util.UUID.columnType`[T]: BaseColumnType[Id[T]] = MappedColumnType.base[Id[T], UUID](id => UUID.fromString(id.value), uuid => Id[T](uuid.toString)) } -- cgit v1.2.3 From 0d4a45707fd4554722496f3370abe6f0f11eefcb Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Wed, 7 Dec 2016 07:18:06 -0800 Subject: make column mapper names more consistent --- src/main/scala/xyz/driver/core/database.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/scala/xyz') diff --git a/src/main/scala/xyz/driver/core/database.scala b/src/main/scala/xyz/driver/core/database.scala index 91c2305..d337b8b 100644 --- a/src/main/scala/xyz/driver/core/database.scala +++ b/src/main/scala/xyz/driver/core/database.scala @@ -38,7 +38,7 @@ object database { val profile: JdbcProfile import profile.api._ - implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] = + implicit def `xyz.driver.core.Id.columnTypeFromLong`[T]: BaseColumnType[Id[T]] = MappedColumnType.base[Id[T], Long](_.value.toLong, serialId => Id[T](serialId.toString)) implicit def `xyz.driver.core.Name.columnType`[T]: BaseColumnType[Name[T]] = @@ -47,7 +47,7 @@ object database { implicit def `xyz.driver.core.time.Time.columnType`: BaseColumnType[Time] = MappedColumnType.base[Time, Long](_.millis, Time(_)) - implicit def `java.util.UUID.columnType`[T]: BaseColumnType[Id[T]] = + implicit def `xyz.driver.core.Id.columnTypeFromUUID`[T]: BaseColumnType[Id[T]] = MappedColumnType.base[Id[T], UUID](id => UUID.fromString(id.value), uuid => Id[T](uuid.toString)) } -- cgit v1.2.3 From 33d826b408b6fc6c62128e4fa6612407eef7567c Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Wed, 7 Dec 2016 08:14:13 -0800 Subject: add numeric Id generator --- src/main/scala/xyz/driver/core/generators.scala | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/main/scala/xyz') diff --git a/src/main/scala/xyz/driver/core/generators.scala b/src/main/scala/xyz/driver/core/generators.scala index 7d33446..c61cb94 100644 --- a/src/main/scala/xyz/driver/core/generators.scala +++ b/src/main/scala/xyz/driver/core/generators.scala @@ -26,6 +26,10 @@ object generators { def nextId[T](maxLength: Int): Id[T] = Id[T](nextString(maxLength)) + def nextNumericId[T](): Id[T] = Id[T](nextLong.abs.toString) + + def nextNumericId[T](maxValue: Int): Id[T] = Id[T](nextInt(maxValue).toString) + def nextName[T](maxLength: Int = DefaultMaxLength): Name[T] = Name[T](nextString(maxLength)) def nextUuid() = java.util.UUID.randomUUID -- cgit v1.2.3 From d4d19ed3953b7f0530dd70b4f0c096cc68e2b7ec Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Mon, 12 Dec 2016 14:18:24 -0800 Subject: separate the clashing Id type mappers into traits --- src/main/scala/xyz/driver/core/database.scala | 28 +++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'src/main/scala/xyz') diff --git a/src/main/scala/xyz/driver/core/database.scala b/src/main/scala/xyz/driver/core/database.scala index d337b8b..80348d8 100644 --- a/src/main/scala/xyz/driver/core/database.scala +++ b/src/main/scala/xyz/driver/core/database.scala @@ -33,22 +33,38 @@ object database { } trait ColumnTypes { - import java.util.UUID - val profile: JdbcProfile import profile.api._ - implicit def `xyz.driver.core.Id.columnTypeFromLong`[T]: BaseColumnType[Id[T]] = - MappedColumnType.base[Id[T], Long](_.value.toLong, serialId => Id[T](serialId.toString)) + implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] implicit def `xyz.driver.core.Name.columnType`[T]: BaseColumnType[Name[T]] = MappedColumnType.base[Name[T], String](_.value, Name[T](_)) implicit def `xyz.driver.core.time.Time.columnType`: BaseColumnType[Time] = MappedColumnType.base[Time, Long](_.millis, Time(_)) + } + + object ColumnTypes { + trait UUIDPrimaryKey extends ColumnTypes { + import java.util.UUID + import profile.api._ + + override implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] = + MappedColumnType.base[Id[T], UUID](id => UUID.fromString(id.value), uuid => Id[T](uuid.toString)) + } + trait SerialIdPrimaryKey extends ColumnTypes { + import profile.api._ + + override implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] = + MappedColumnType.base[Id[T], Long](_.value.toLong, serialId => Id[T](serialId.toString)) + } + trait NaturalPrimaryKey extends ColumnTypes { + import profile.api._ - implicit def `xyz.driver.core.Id.columnTypeFromUUID`[T]: BaseColumnType[Id[T]] = - MappedColumnType.base[Id[T], UUID](id => UUID.fromString(id.value), uuid => Id[T](uuid.toString)) + override implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] = + MappedColumnType.base[Id[T], String](_.value, Id[T](_)) + } } trait DatabaseObject extends ColumnTypes { -- cgit v1.2.3 From 5b1a91290035cb71dde82d10f1f6ee173d24273b Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Mon, 12 Dec 2016 17:31:30 -0800 Subject: simplify key mapper trait names --- src/main/scala/xyz/driver/core/database.scala | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/main/scala/xyz') diff --git a/src/main/scala/xyz/driver/core/database.scala b/src/main/scala/xyz/driver/core/database.scala index 80348d8..a82e345 100644 --- a/src/main/scala/xyz/driver/core/database.scala +++ b/src/main/scala/xyz/driver/core/database.scala @@ -46,23 +46,23 @@ object database { } object ColumnTypes { - trait UUIDPrimaryKey extends ColumnTypes { - import java.util.UUID + trait UUID extends ColumnTypes { import profile.api._ - override implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] = - MappedColumnType.base[Id[T], UUID](id => UUID.fromString(id.value), uuid => Id[T](uuid.toString)) + override implicit def `xyz.driver.core.Id.columnType`[T] = + MappedColumnType + .base[Id[T], java.util.UUID](id => java.util.UUID.fromString(id.value), uuid => Id[T](uuid.toString)) } - trait SerialIdPrimaryKey extends ColumnTypes { + trait SerialId extends ColumnTypes { import profile.api._ - override implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] = + override implicit def `xyz.driver.core.Id.columnType`[T] = MappedColumnType.base[Id[T], Long](_.value.toLong, serialId => Id[T](serialId.toString)) } - trait NaturalPrimaryKey extends ColumnTypes { + trait NaturalId extends ColumnTypes { import profile.api._ - override implicit def `xyz.driver.core.Id.columnType`[T]: BaseColumnType[Id[T]] = + override implicit def `xyz.driver.core.Id.columnType`[T] = MappedColumnType.base[Id[T], String](_.value, Id[T](_)) } } -- cgit v1.2.3