Ich möchte eine bestimmte Spalte in der Zeile nur aktualisieren, wenn die Zeile gültige Daten enthält. Spezifisch sein: Ich habe eine Tabelle mit Event
, die start
, stop
und isActive
Flag speichert. Ich möchte einige Events
aktivieren durch Einstellung isActive
bis true
, aber ich muss überprüfen, ob Start-und Stoppdaten gültig sind. Modell:Eine Zeile nur aktualisieren, wenn die Bedingung erfüllt ist
case class Event {start:DateTime, stop:DateTime, isActive:Boolean}
meine Validierungsmethode Signatur:
validateEvent(ev: Event): Boolean
Mein erster Ansatz:
def activateEv() = Action.async(parse.json) { request => { ... val ev = db.run(dao.findEvById(poid, uid)) val ret = ev.flatMap { case st: Option[Event] => if (validateEvent(st.get)) { db.run(dao.updateActivity(poid, true).map { case 0 => false case other => true } } else Future(false) } ... } }
Ich glaube, dass es nicht der richtige Weg ist, wie dieses Problem angegangen werden soll. Könnten Sie uns beraten? Vielleicht wird nur ein db.run ausreichen?