Я реализую таблицу Users в Slick с классом User, который расширяет свойство SecureSocial Identity. У меня возникли проблемы с преобразованием из необязательного объекта типа, не сохраняемого в базе данных, в необязательный примитивный тип базы данных.
Чтобы обратиться к: Slick docs, Документы по SecureSocial (чтобы сгенерировать документацию по API для SecureSocial, извлеките из их Github, перейдите в их каталог "module-code" и запустите play doc
. Затем посмотрите в module-code/target/ api и откройте index.html)
Что я имею
Возьмите этот параметр в классе case User
:
oAuth1Info: Option[securesocial.core.OAuth1Info]
Где новый конструктор экземпляра OAuth1Info в Scaladoc выглядит так:
new OAuth1Info(token: String, secret: String)
Теперь в моем методе *
(как описано здесь):
def * = stuffs ~ oAuth1InfoToken ~ oAuth1InfoToken ~ moreStuff <>
( // the following is the apply method
{ t => User(stuffs,
Some(OAuth1Info( (t._9).getOrElse(""), (t._10).getOrElse("")) ),
moreStuffs)
}, // the following is the unapply method
{
(r: User) => Some( (r.stuffs,
(r.oAuth1Info).getOrElse(None).token , // ERROR
(r.oAuth1Info).getOrElse(None).secret , // ERROR
r.moreStuffs) )
}
Что я пытаюсь сделать
Вставьте None
в базу данных, если oAuth1Info
не было указано, и
Option[securesocial.core.OAuth1Info] = None
В противном случае возьмите объект OAuth1Info
, получите токен и секрет и сохраните их в соответствующих столбцах моей базы данных.
В дополнение к этой отображенной проекции, представляющей собой строку из 500+ символов, мне нужно сделать что-то вроде
oAuth1Info match {
case None: None
case _: oAuth1Info.token
}
? Возможно ли однострочное сопоставление с образцом? Я так потерялся в своем коде в этот момент...
Спасибо за любую помощь
Если вы хотите увидеть мою полную реализацию до сих пор...
Scala + Slick + SecureSocial = печально длинный код
Я знаю, что этот код — стена текста. Многострочный код Scala был бы здесь потрясающим, если бы он существовал? Pastebin