¿Cómo puedo crear un tipo de columna personalizada con Typesafe Slick en Scala?
Tengo una tabla de PostgreSQL con unenum
, que es creado por:
CREATE TYPE file_status AS ENUM ('new', 'uploading', 'queued', 'processing', 'done', 'failed');
y un campo asociado
CREATE TABLE files ( ...
status file_status NOT NULL,
...
);
Con Scala 2.10 y Typesafe Slick 1.0.1, he creado asignaciones a mi tabla de Archivos que funcionan muy bien con la excepción destatus
campo, que requiere la costumbrefile_status
tipo, una cadena.
def status = column[FileStatus]("status")
He estado jugando con Slick's TypeMapper, pero no puedo entender cómo hacer que funcione:
sealed trait FileStatus
implicit val fileStatusMapper: TypeMapper[String] = base[FileStatus, String](
s => s.toString,
f => f(FileStatus)
)
Me sale el error:tipo de desajuste encontrado: models.Files.FileStatus.type requerido: Int
¿Por qué se requiere un int? ¿Es por el TypeMapper? También he intentado
...
f => f.toString
// type mismatch; found : String required: models.Files.FileStatus
f => f
// type mismatch; found : String required: models.Files.FileStatus
Gracias por cualquier sugerencia para ayudarme a entender este mapeo.