Jak mogę utworzyć niestandardowy typ kolumny za pomocą Typesafe Slick w Scali?
Mam tabelę PostgreSQL zenum
, który jest tworzony przez:
CREATE TYPE file_status AS ENUM ('new', 'uploading', 'queued', 'processing', 'done', 'failed');
i powiązane pole
CREATE TABLE files ( ...
status file_status NOT NULL,
...
);
Z Scala 2.10 i Typesafe Slick 1.0.1 stworzyłem mapowania do mojej tabeli plików, które działają świetnie z wyjątkiemstatus
pole, które wymaga zwyczajufile_status
typ, ciąg.
def status = column[FileStatus]("status")
Grałem w Slick's TypeMapper, ale nie wiem, jak go uruchomić:
sealed trait FileStatus
implicit val fileStatusMapper: TypeMapper[String] = base[FileStatus, String](
s => s.toString,
f => f(FileStatus)
)
Dostaję błąd:niedopasowanie typu; znaleziono: models.Files.FileStatus.type required: Int
Dlaczego wymagany jest Int? Czy to z powodu TypeMapper? Próbowałem też
...
f => f.toString
// type mismatch; found : String required: models.Files.FileStatus
f => f
// type mismatch; found : String required: models.Files.FileStatus
Dziękujemy za wszelkie wskazówki, które pomogą mi zrozumieć to mapowanie.