目前我这样做:
def addProcessStepTemplateToProcessTemplate(step: ProcessStepTemplatesModel, processId: Int): Future[Option[ProcessStepTemplatesModel]] = {
val action = (processStepTemplates returning processStepTemplates.map(_.id)) += ProcessStepTemplatesModel(None, step.title, step.createdat, step.updatedat, step.deadline, step.comment, step.stepType, step.deleted, Some(processId))
db.run(action).flatMap(id => {
db.run(processStepTemplates.filter(_.id === id).result.headOption)
})
}
我有两个db.run
来返回创建的记录。
有没有办法只用一个db.run
来实现这个目标?
答案 0 :(得分:2)
您可以使用动作合成(使用for-comprehension或使用map / flatMap)。例如:
def addProcessStepTemplateToProcessTemplate(step: ProcessStepTemplatesModel, processId: Int): Future[Option[ProcessStepTemplatesModel]] = {
val action = (processStepTemplates returning ...)
val composedAction = action.flatMap { id =>
processStepTemplates.filter(_.id === id).result.headOption
}
db.run(composedAction)
}