Add a use colum to metadata entities

This commit is contained in:
Eike Kettner
2021-03-10 22:16:04 +01:00
parent 1a188afbd7
commit 0229a867af
13 changed files with 223 additions and 22 deletions

View File

@ -0,0 +1,46 @@
package docspell.common
import cats.data.NonEmptyList
import io.circe.Decoder
import io.circe.Encoder
sealed trait EquipmentUse { self: Product =>
final def name: String =
self.productPrefix.toLowerCase()
}
object EquipmentUse {
case object Concerning extends EquipmentUse
case object Disabled extends EquipmentUse
def concerning: EquipmentUse = Concerning
def disabled: EquipmentUse = Disabled
val all: NonEmptyList[EquipmentUse] =
NonEmptyList.of(concerning, disabled)
val notDisabled: NonEmptyList[EquipmentUse] =
NonEmptyList.of(concerning)
def fromString(str: String): Either[String, EquipmentUse] =
str.toLowerCase() match {
case "concerning" =>
Right(Concerning)
case "disabled" =>
Right(Disabled)
case _ =>
Left(s"Unknown equipment-use: $str")
}
def unsafeFromString(str: String): EquipmentUse =
fromString(str).fold(sys.error, identity)
implicit val jsonDecoder: Decoder[EquipmentUse] =
Decoder.decodeString.emap(fromString)
implicit val jsonEncoder: Encoder[EquipmentUse] =
Encoder.encodeString.contramap(_.name)
}

View File

@ -0,0 +1,46 @@
package docspell.common
import cats.data.NonEmptyList
import io.circe.Decoder
import io.circe.Encoder
sealed trait OrgUse { self: Product =>
final def name: String =
self.productPrefix.toLowerCase()
}
object OrgUse {
case object Correspondent extends OrgUse
case object Disabled extends OrgUse
def correspondent: OrgUse = Correspondent
def disabled: OrgUse = Disabled
val all: NonEmptyList[OrgUse] =
NonEmptyList.of(correspondent, disabled)
val notDisabled: NonEmptyList[OrgUse] =
NonEmptyList.of(correspondent)
def fromString(str: String): Either[String, OrgUse] =
str.toLowerCase() match {
case "correspondent" =>
Right(Correspondent)
case "disabled" =>
Right(Disabled)
case _ =>
Left(s"Unknown organization-use: $str")
}
def unsafeFromString(str: String): OrgUse =
fromString(str).fold(sys.error, identity)
implicit val jsonDecoder: Decoder[OrgUse] =
Decoder.decodeString.emap(fromString)
implicit val jsonEncoder: Encoder[OrgUse] =
Encoder.encodeString.contramap(_.name)
}

View File

@ -16,6 +16,7 @@ object PersonUse {
case object Correspondent extends PersonUse
case object Concerning extends PersonUse
case object Both extends PersonUse
case object Disabled extends PersonUse
def concerning: PersonUse = Concerning
def correspondent: PersonUse = Correspondent
@ -35,6 +36,8 @@ object PersonUse {
Right(Concerning)
case "both" =>
Right(Both)
case "disabled" =>
Right(Disabled)
case _ =>
Left(s"Unknown person-use: $str")
}