aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/core.scala
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-10-19 14:42:50 -0700
committervlad <vlad@driver.xyz>2017-10-19 14:42:50 -0700
commitc13a90f7dc6565e0beddcc6a61609d4e131f55ba (patch)
tree9d56f512986394f0bb3901ef09abaea809dae667 /src/main/scala/xyz/driver/core/core.scala
parent2af63e7fb8b15568adaf2d9f0a6b395d6719fd71 (diff)
downloaddriver-core-c13a90f7dc6565e0beddcc6a61609d4e131f55ba.tar.gz
driver-core-c13a90f7dc6565e0beddcc6a61609d4e131f55ba.tar.bz2
driver-core-c13a90f7dc6565e0beddcc6a61609d4e131f55ba.zip
[RFC] Using "Refined" library (https://github.com/fthomas/refined) to allow defining entities with more precise types
Diffstat (limited to 'src/main/scala/xyz/driver/core/core.scala')
-rw-r--r--src/main/scala/xyz/driver/core/core.scala14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala
index 4747574..c405962 100644
--- a/src/main/scala/xyz/driver/core/core.scala
+++ b/src/main/scala/xyz/driver/core/core.scala
@@ -1,6 +1,8 @@
package xyz.driver
import scalaz.{Equal, Monad, OptionT}
+import eu.timepit.refined.api.Refined
+import eu.timepit.refined.collection.NonEmpty
package object core {
@@ -83,6 +85,18 @@ package core {
implicit def nameOrdering[T]: Ordering[Name[T]] = Ordering.by(_.value)
}
+ final case class NonEmptyName[+Tag](value: String Refined NonEmpty) {
+ @inline def length: Int = value.value.length
+ override def toString: String = value.value
+ }
+
+ object NonEmptyName {
+ implicit def nonEmptyNameEqual[T]: Equal[NonEmptyName[T]] =
+ Equal.equal[NonEmptyName[T]](_.value.value == _.value.value)
+
+ implicit def nonEmptyNameOrdering[T]: Ordering[NonEmptyName[T]] = Ordering.by(_.value.value)
+ }
+
final case class Revision[T](id: String)
object Revision {