¿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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta