Безопасный выбор типа и отображение нетипизированного необработанного результата в Slick

У меня есть ситуация, когда клиентское приложение не полностью осведомлено о схеме базы данных. Например, я точно знаю, что есть email поле. Но в качестве результата запроса я хотел бы вернуть все поля. Они никак не обрабатываются, я просто сериализую результат как JSON. Тем не менее, я хотел бы иметь безопасность типов для выбора таблицы и присоединения. Возможно ли это сделать в Slick (или, может быть, в другой библиотеке)?

Например, у меня есть таблица users с известной схемой:

class Users(tag: Tag) extends Table[(String)](tag, "users") {
  def email = column[String]("email")
  def * = (email) // Not sure about this. Should it be rewritten?
}

Можно ли запросить эту таблицу (или объединить с другими таблицами) безопасным для типов способом, подобным этому:

emailDB.run(TableQuery[Users].filter(_.email === encryptedEmail).result)

но каким-то образом получить все поля записи и сопоставить результирующий набор всех полей из таблицы как Map[String, String] или же Map[String, Any] или бесформенный HList?

PS У меня есть относительно сумасшедшая идея заменить шаблон * с функцией, которая лениво проверяет схему таблицы и создает гетерогенный список для отображения в

0 ответов

Другие вопросы по тегам