Ho una tabella di PostgreSQL con un enum
, che viene creato da:Come posso creare un tipo di colonna personalizzato con Typesafe Slick in Scala?
CREATE TYPE file_status AS ENUM ('new', 'uploading', 'queued', 'processing', 'done', 'failed');
e di un campo associato
mappatureCREATE TABLE files (...
status file_status NOT NULL,
...
);
Con Scala 2.10 e Typesafe Slick 1.0.1, che ho creato per la mia tabella Files funziona perfettamente con l'eccezione del campo status
, che richiede il tipo personalizzato file_status
, una stringa.
def status = column[FileStatus]("status")
Ho giocato con TypeMapper di Slick, ma non riesco a capire come farlo funzionare:
sealed trait FileStatus
implicit val fileStatusMapper: TypeMapper[String] = base[FileStatus, String](
s => s.toString,
f => f(FileStatus)
)
ottengo l'errore: tipo non corrispondente; trovato: model.Files.FileStatus.type richiesto: Int
Perché è necessaria una Int? È a causa di TypeMapper? Ho anche provato
...
f => f.toString
// type mismatch; found : String required: models.Files.FileStatus
f => f
// type mismatch; found : String required: models.Files.FileStatus
Grazie per tutti i puntatori per aiutare a capire questa mappatura.
Ahhh, grazie - la creazione di oggetti caso è stato il pezzo che stavo saltando, per qualsiasi motivo. Grazie @cvogt Aggiornamento – jbnunn
: aggiunta un'implementazione alternativa :) – cvogt