Ich habe eine PostgreSQL-Tabelle mit einem enum
, die erstellt wird:Wie kann ich einen benutzerdefinierten Spaltentyp mit TypeSafe Slick in Scala erstellen?
CREATE TYPE file_status AS ENUM ('new', 'uploading', 'queued', 'processing', 'done', 'failed');
und ein zugehöriges Feld
CREATE TABLE files (...
status file_status NOT NULL,
...
);
Slick 1.0.1
Mit Scala 2.10 und Typesafe, die ich angelegt habe Mappings Meine Dateien Tabelle, die mit Ausnahme des status
Felds, das den benutzerdefinierten Typ file_status
Typ eine Zeichenfolge, eine große Zeichenfolge funktioniert.
def status = column[FileStatus]("status")
Ich habe mit Slicks TypeMapper spielen, kann aber nicht ganz herausfinden, wie man es an die Arbeit:
sealed trait FileStatus
implicit val fileStatusMapper: TypeMapper[String] = base[FileStatus, String](
s => s.toString,
f => f(FileStatus)
)
ich den Fehler: Typenkonflikt; gefunden: models.Files.FileStatus.type erforderlich: Int
Warum wird ein Int benötigt? Liegt es am TypeMapper? Ich habe auch versucht
...
f => f.toString
// type mismatch; found : String required: models.Files.FileStatus
f => f
// type mismatch; found : String required: models.Files.FileStatus
Vielen Dank für alle Hinweise in mir helfen, diese Zuordnung zu verstehen.
Ahhh, danke - die Schaffung Fall Objekte war das Stück, das ich hüpfte, egal aus welchem Grund. Danke @cvogt – jbnunn
Update: eine alternative Implementierung hinzugefügt :) – cvogt