当前位置: 首页 > 知识库问答 >
问题:

滑头3.1-将滑头表行对象转换为case类

笪德华
2023-03-14

我已经使用了光滑的3.1代码生成器来创建默认的对象和特征表。Scala

下面的方法可以工作,但是我想隐式或显式地将UserRow和PasswordsRow转换为User和userpassword。

override def getUser(email: String): Future[Option[(Tables.UsersRow, Tables.PasswordsRow)]] = db.run {
(for {
  user <- users if user.email === email
  password <- passwords if password.id === user.id
} yield (user, password)).result.headOption
  override def getUser(email: String): Future[Option[(User, UserPassword)]] = db.run {
    (for {
      user <- users if user.email === email
      password <- passwords if password.id === user.id
    } yield (user, password)).result.headOption
  }
  package model

import com.wordnik.swagger.annotations.{ ApiModel, ApiModelProperty }
import slick.jdbc.GetResult
import spray.json.DefaultJsonProtocol

import scala.annotation.meta.field

case class User(
  id: Int,
  email: String,
  name: Option[String] = None,
  surname: Option[String] = None,
  passwordId: Option[Int] = None
)

object User extends DefaultJsonProtocol{
  implicit val getUserResult = GetResult(r => User(r.<<, r.<<, r.<<, r.<<, r.<<))

  implicit val userFormat = jsonFormat5(User.apply)
}
package model

import com.github.t3hnar.bcrypt.{Password, generateSalt}
import slick.jdbc.GetResult


case class UserPassword(id: Int, hashedPassword: Option[String], salt: String = generateSalt) {
  def passwordMatches(password: String): Boolean = hashedPassword.contains(password.bcrypt(salt))
}

object UserPassword {

  implicit val getUserPasswordResult = GetResult(r => UserPassword(r.<<, r.<<, r.<<))

  def newWithPassword(password: String) = {
    val salt = generateSalt
    new UserPassword(0, Some(password.bcrypt(salt)), salt)
  }
}

共有1个答案

吕成业
2023-03-14

也许像这样?

val futureUserRowAndPwdRow = getUser(email)
val futureUser: Future[Option[(User, UserPassword)]] = futureUserRowAndPwdRow map {
  maybeUserRow => maybeUserRow map {
    case (userRow, pwdRow) => (User(userRow.whatever....), UserPassword(..))
  }
}
 类似资料:
  • 我一直在尝试在react应用程序中用JQuery编写滑动条函数,以过滤大量数据集并在控制台上显示结果。我该怎么做呢

  • 我有多个猫头鹰旋转木马设置在我的主页。我有第一个(关于免费送货的)设置为滑速10000。因为你可以看到所有的幻灯片都以相同的速度变化。 这有什么不起作用的原因吗?我做错什么了吗?

  • 问题内容: 我有一个简单的csv文件 people.csv: 我想要做的是获取CSV的每一行,将其转换为JavaScript对象,将其存储到数组中,然后将数组转换为JSON对象。 server.js: 我的问题是,当我在bufferString上调用.split(’\ n’)方法时,是否实际上是将CSV行转换为Javascript对象,还是有另一种方法? 问题答案: 通过做这个: 您将拥有一个包含

  • 项目设置:Intellj- 我正在尝试启动并运行我的数据库。我可以单击“立即应用此脚本”按钮。 单击后,应用程序将正常启动。但当我查看默认DB和公共模式时,什么都没有。 我正在使用Intellj的集成DB工具打开DB。 该项目在GitHub上(如果更好,我也可以发布重要文件) 当我直接从控制台运行脚本时,它可以按预期工作。 如何以及在哪里可以检查脚本是否已执行以及在哪里执行?

  • 我经常在Dribbble看到这种用户界面技术,主要是在苹果手机上作为时间表演示的,我真的很想知道在Android系统上是否有可能做到这一点。这个想法是利用滚动条,让它激活它经过的每一行。 第一个是列表(左边的照片,右边的名字),大致用滚动轨道在中间分割。滚动条无法展开,必须小于最小的行。我相信通过组合两个列表视图并使它们滚动在一起,可以产生这种安排。 当滚动条移动到第二行时,第二行显示屏幕。停止后

  • 问题内容: Json字符串: C#类: C#将json转换为电影的c#列表: 我的变量最终是一个计数为0的空列表。我是否缺少某些内容? 问题答案: 您的C#类映射与json结构不匹配。 解决方案: