sql >> データベース >  >> RDS >> PostgreSQL

ScalaでTypesafeSlickを使用してカスタム列タイプを作成するにはどうすればよいですか?

    ドキュメントからの引用( 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
    )
    

    これをファイルステータスに適合させる:

    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
        ...
      }
    )
    

    更新:

    もう1つの、冗長性は低くなりますが、バージョンが明確ではない可能性があります:

    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. PHPでのビット操作とMySQLの取得

    2. 2つのテーブルを組み合わせて検索するためのMySQLリクエスト

    3. 複雑なGroupBy後の前の行/日からの増加率を計算するにはどうすればよいですか?

    4. ORA-010179iクライアントから11gデータベースに接続するときにユーザー名/パスワードが無効です