All Downloads are FREE. Search and download functionalities are using the official Maven repository.

zio.dynamodb.proofs.IsPrimaryKey.scala Maven / Gradle / Ivy

The newest version!
package zio.dynamodb.proofs

import scala.annotation.implicitNotFound

@implicitNotFound(
  "DynamoDB does not support primary key type ${A} - allowed types are: String, Number, Binary or an Option of those types"
)
sealed trait IsPrimaryKey[-A]

object IsPrimaryKey {
  implicit val stringIsPrimaryKey: IsPrimaryKey[String] = new IsPrimaryKey[String] {}

  implicit val shortIsPrimaryKey: IsPrimaryKey[Short]           = new IsPrimaryKey[Short] {}
  implicit val intIsPrimaryKey: IsPrimaryKey[Int]               = new IsPrimaryKey[Int] {}
  implicit val longIsPrimaryKey: IsPrimaryKey[Long]             = new IsPrimaryKey[Long] {}
  implicit val floatIsPrimaryKey: IsPrimaryKey[Float]           = new IsPrimaryKey[Float] {}
  implicit val doubleIsPrimaryKey: IsPrimaryKey[Double]         = new IsPrimaryKey[Double] {}
  implicit val bigDecimalIsPrimaryKey: IsPrimaryKey[BigDecimal] = new IsPrimaryKey[BigDecimal] {}
  implicit val binaryIsPrimaryKey: IsPrimaryKey[Iterable[Byte]] = new IsPrimaryKey[Iterable[Byte]] {}

  implicit val stringIsPrimaryKeyOpt: IsPrimaryKey[Option[String]]         = new IsPrimaryKey[Option[String]] {}
  implicit val shortIsPrimaryKeyOpt: IsPrimaryKey[Option[Short]]           = new IsPrimaryKey[Option[Short]] {}
  implicit val intIsPrimaryKeyOpt: IsPrimaryKey[Option[Int]]               = new IsPrimaryKey[Option[Int]] {}
  implicit val longIsPrimaryKeyOpt: IsPrimaryKey[Option[Long]]             = new IsPrimaryKey[Option[Long]] {}
  implicit val floatIsPrimaryKeyOpt: IsPrimaryKey[Option[Float]]           = new IsPrimaryKey[Option[Float]] {}
  implicit val doubleIsPrimaryKeyOpt: IsPrimaryKey[Option[Double]]         = new IsPrimaryKey[Option[Double]] {}
  implicit val bigDecimalIsPrimaryKeyOpt: IsPrimaryKey[Option[BigDecimal]] =
    new IsPrimaryKey[Option[BigDecimal]] {}
  implicit val binaryIsPrimaryKeyOpt: IsPrimaryKey[Option[Iterable[Byte]]] =
    new IsPrimaryKey[Option[Iterable[Byte]]] {}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy