enum
で作成された PostgreSQL テーブルがあります。
CREATE TYPE file_status AS ENUM ('new', 'uploading', 'queued', 'processing', 'done', 'failed');
および関連するフィールド
CREATE TABLE files ( ...
status file_status NOT NULL,
...
);
Scala 2.10 と Typesafe Slick 1.0.1 を使用して、Files テーブルへのマッピングを作成しました。これは、カスタムタイプである文字列status
を必要とするフィールドを除いてはうまく機能します。file_status
def status = column[FileStatus]("status")
私はSlickのTypeMapperで遊んでいますが、それを機能させる方法がよくわかりません:
sealed trait FileStatus
implicit val fileStatusMapper: TypeMapper[String] = base[FileStatus, String](
s => s.toString,
f => f(FileStatus)
)
次のエラーが表示されます:タイプが一致しません。見つかった: models.Files.FileStatus.type 必須: Int
なぜ Int が必要なのですか? TypeMapperのせいですか?私も試してみました
...
f => f.toString
// type mismatch; found : String required: models.Files.FileStatus
f => f
// type mismatch; found : String required: models.Files.FileStatus
このマッピングを理解するのに役立つ指針をありがとう。