Slick Queries With GroupBy - PullRequest
       19

Slick Queries With GroupBy

0 голосов
/ 09 октября 2018

Я новичок в Scala и Slick.Я пытаюсь выполнить запрос с группировкой по объекту и создать две последовательности для каждого объекта.

Это мой код:

val firstQuery = {
      for {
        table1Id <- Table1.filter(_.someid === someid).map(_.someid)
        table2 <- Table2.filter(_.someid === table1Id)
        table3 <- Table3.filter(_.someId === someid)
        _ <- {
          Table4.filter(table4 => table4.someid === table3.someid &&
            table4.name === "$$$")
        }
        table5 <- Table5.filter(_.someid === table2.someid)
      } yield {
        (table2, table3, table5)
      }
    }
    val finalQuery = {
      for {
        (table6, firstQueryTuple) <- {
          Table6 joinRight firstQuery on
            ((firstTable, secondTable) => firstTable.someid === secondTable._1.someid)
        }
      } yield {
        (table6, firstQueryTuple._1, firstQueryTuple._2, firstQueryTuple._3)
      }
    }
    dataBaseConnection.run(finalQuery.result).map { resultSequence =>
      val grouping = resultSequence.groupBy { case (table6, table2, _, _) => (table6, table2) }
      val groupingFiltered = grouping.map { case (table6table2tuple, sequence) => (table6table2tuple, sequence.map(_._4) (which is Table5), sequence.map(_._3) (which is table3)) }.toSeq
      groupingFiltered match {
        case tupleQuery if tupleQuery.nonEmpty => Success(tupleQuery.map(x => (x._1._2, x._1._1, x._2, x._3) ))
        case _ => Failure(NonEmptyList(DBMissingRecordProblem(s"Error")))
      }
    }

Теперь мне нужно добиться этогорезультат

Seq[(Table2, Option[Table6], Seq[Table5], Seq[Table3])]

Есть ли способ сгруппировать и получить две последовательности?Я знаю, что это можно сделать для одной последовательности, я имею в виду группирование по объекту и достижение (object, Seq[anotherObject]) Пожалуйста, помогите мне, если можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...