sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik een aangepast kolomtype maken met Typesafe Slick in Scala?

Citeren uit de documenten ( http://slick.typesafe.com/doc/1.0.1/lifted-embedding.html#user-defined-functions-and-types ):

// An algebraic data type for booleans
sealed trait Bool
case object True extends Bool
case object False extends Bool

// And a TypeMapper that maps it to Int values 1 and 0
implicit val boolTypeMapper = MappedTypeMapper.base[Bool, Int](
  { b => if(b == True) 1 else 0 },    // map Bool to Int
  { i => if(i == 1) True else False } // map Int to Bool
)

Dit aanpassen aan de bestandsstatus:

sealed trait FileStatus
case object New extends FileStatus
case object Uploading extends FileStatus
...

implicit val fileStatusTypeMapper = MappedTypeMapper.base[FileStatus, String](
  {
    case New => "new"
    case Uploading => "uploading"
    ...
  },{
    case "new" => New
    case "uploading" => Uploading
    ...
  }
)

Bijwerken:

Een andere, minder overbodige, maar mogelijk ook minder duidelijke versie:

sealed trait FileStatus
case object New extends FileStatus
case object Uploading extends FileStatus
...

val statusMap = Map(
    New -> "new",
    Uploading -> "uploading",
    ...
)

implicit val fileStatusTypeMapper = MappedTypeMapper.base[FileStatus, String](
  statusMap,
  statusMap.map(_.swap)
)


  1. Hoe genereer ik een lijst met alle datums tussen sysdate-30 en sysdate+30?

  2. Gegevens van de ene MySQL-tabel naar de andere verplaatsen

  3. Hoe voer ik een GROUP BY uit op een aliased kolom in MS-SQL Server?

  4. DATEDIFF() geeft verkeerde resultaten in SQL Server? Lees dit.