All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scalikejdbc.OneToManies14SQL.scala Maven / Gradle / Ivy

/*
 * Copyright 2013 - 2015 scalikejdbc.org
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package scalikejdbc

import scala.collection.mutable.LinkedHashMap
import scala.collection.generic.CanBuildFrom
import scala.language.higherKinds

private[scalikejdbc] trait OneToManies14Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E <: WithExtractor, Z]
    extends SQL[Z, E]
    with RelationalSQLResultSetOperations[Z] {

  private[scalikejdbc] def extractOne: WrappedResultSet => A
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1]
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2]
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3]
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4]
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5]
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6]
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7]
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8]
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9]
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10]
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11]
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12]
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13]
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14]
  private[scalikejdbc] def transform: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z

  private[scalikejdbc] def processResultSet(result: (LinkedHashMap[A, (Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14])]),
    rs: WrappedResultSet): LinkedHashMap[A, (Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14])] = {
    val o = extractOne(rs)
    val (to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14) = (extractTo1(rs), extractTo2(rs), extractTo3(rs), extractTo4(rs), extractTo5(rs), extractTo6(rs), extractTo7(rs), extractTo8(rs), extractTo9(rs), extractTo10(rs), extractTo11(rs), extractTo12(rs), extractTo13(rs), extractTo14(rs))
    result.keys.find(_ == o).map { _ =>
      (to1 orElse to2 orElse to3 orElse to4 orElse to5 orElse to6 orElse to7 orElse to8 orElse to9 orElse to10 orElse to11 orElse to12 orElse to13 orElse to14).map { _ =>
        val (ts1, ts2, ts3, ts4, ts5, ts6, ts7, ts8, ts9, ts10, ts11, ts12, ts13, ts14) = result.apply(o)
        result += (o -> (
          to1.map(t => if (ts1.contains(t)) ts1 else ts1 :+ t).getOrElse(ts1),
          to2.map(t => if (ts2.contains(t)) ts2 else ts2 :+ t).getOrElse(ts2),
          to3.map(t => if (ts3.contains(t)) ts3 else ts3 :+ t).getOrElse(ts3),
          to4.map(t => if (ts4.contains(t)) ts4 else ts4 :+ t).getOrElse(ts4),
          to5.map(t => if (ts5.contains(t)) ts5 else ts5 :+ t).getOrElse(ts5),
          to6.map(t => if (ts6.contains(t)) ts6 else ts6 :+ t).getOrElse(ts6),
          to7.map(t => if (ts7.contains(t)) ts7 else ts7 :+ t).getOrElse(ts7),
          to8.map(t => if (ts8.contains(t)) ts8 else ts8 :+ t).getOrElse(ts8),
          to9.map(t => if (ts9.contains(t)) ts9 else ts9 :+ t).getOrElse(ts9),
          to10.map(t => if (ts10.contains(t)) ts10 else ts10 :+ t).getOrElse(ts10),
          to11.map(t => if (ts11.contains(t)) ts11 else ts11 :+ t).getOrElse(ts11),
          to12.map(t => if (ts12.contains(t)) ts12 else ts12 :+ t).getOrElse(ts12),
          to13.map(t => if (ts13.contains(t)) ts13 else ts13 :+ t).getOrElse(ts13),
          to14.map(t => if (ts14.contains(t)) ts14 else ts14 :+ t).getOrElse(ts14)
        ))
      }.getOrElse(result)
    }.getOrElse {
      result += (
        o -> (
          to1.map(t => Vector(t)).getOrElse(Vector.empty),
          to2.map(t => Vector(t)).getOrElse(Vector.empty),
          to3.map(t => Vector(t)).getOrElse(Vector.empty),
          to4.map(t => Vector(t)).getOrElse(Vector.empty),
          to5.map(t => Vector(t)).getOrElse(Vector.empty),
          to6.map(t => Vector(t)).getOrElse(Vector.empty),
          to7.map(t => Vector(t)).getOrElse(Vector.empty),
          to8.map(t => Vector(t)).getOrElse(Vector.empty),
          to9.map(t => Vector(t)).getOrElse(Vector.empty),
          to10.map(t => Vector(t)).getOrElse(Vector.empty),
          to11.map(t => Vector(t)).getOrElse(Vector.empty),
          to12.map(t => Vector(t)).getOrElse(Vector.empty),
          to13.map(t => Vector(t)).getOrElse(Vector.empty),
          to14.map(t => Vector(t)).getOrElse(Vector.empty)
        )
      )
    }
  }

  private[scalikejdbc] def toTraversable(session: DBSession, sql: String, params: Seq[_], extractor: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z): Traversable[Z] = {
    session.foldLeft(statement, parameters: _*)(LinkedHashMap[A, (Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14])]())(processResultSet).map {
      case (one, (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) => extractor(one, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)
    }
  }

}

class OneToManies14SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E <: WithExtractor, Z](
  override val statement: String,
  override private[scalikejdbc] val rawParameters: Seq[Any])(one: WrappedResultSet => A)(to1: WrappedResultSet => Option[B1], to2: WrappedResultSet => Option[B2], to3: WrappedResultSet => Option[B3], to4: WrappedResultSet => Option[B4], to5: WrappedResultSet => Option[B5], to6: WrappedResultSet => Option[B6], to7: WrappedResultSet => Option[B7], to8: WrappedResultSet => Option[B8], to9: WrappedResultSet => Option[B9], to10: WrappedResultSet => Option[B10], to11: WrappedResultSet => Option[B11], to12: WrappedResultSet => Option[B12], to13: WrappedResultSet => Option[B13], to14: WrappedResultSet => Option[B14])(extractor: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toManies(RS => Option[B1]...)) is specified, use #map((A,B) =>Z) instead."))
    with AllOutputDecisionsUnsupported[Z, E] {

  def map(extractor: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z): OneToManies14SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, HasExtractor, Z] = {
    new OneToManies14SQL(statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14)(extractor)
  }
  override def toTraversable(): OneToManies14SQLToTraversable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = {
    new OneToManies14SQLToTraversable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14)(extractor)
  }
  override def toList(): OneToManies14SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = {
    new OneToManies14SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14)(extractor)
  }
  override def toOption(): OneToManies14SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = {
    new OneToManies14SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14)(extractor)(true)
  }
  override def headOption(): OneToManies14SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = {
    new OneToManies14SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14)(extractor)(false)
  }
  override def toCollection: OneToManies14SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = {
    new OneToManies14SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14)(extractor)
  }

  override def single(): OneToManies14SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = toOption()
  override def first(): OneToManies14SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = headOption()
  override def list(): OneToManies14SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = toList()
  override def traversable(): OneToManies14SQLToTraversable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = toTraversable()
  override def collection: OneToManies14SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] = toCollection
}

class OneToManies14SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E <: WithExtractor, Z](
  override val statement: String,
  override private[scalikejdbc] val rawParameters: Seq[Any])(one: WrappedResultSet => A)(to1: WrappedResultSet => Option[B1], to2: WrappedResultSet => Option[B2], to3: WrappedResultSet => Option[B3], to4: WrappedResultSet => Option[B4], to5: WrappedResultSet => Option[B5], to6: WrappedResultSet => Option[B6], to7: WrappedResultSet => Option[B7], to8: WrappedResultSet => Option[B8], to9: WrappedResultSet => Option[B9], to10: WrappedResultSet => Option[B10], to11: WrappedResultSet => Option[B11], to12: WrappedResultSet => Option[B12], to13: WrappedResultSet => Option[B13], to14: WrappedResultSet => Option[B14])(extractor: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toManies(RS => Option[B1])) is specified, use #map((A,B) =>Z) instead."))
    with SQLToList[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies14Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

  override def apply()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor): List[Z] = {
    executeQuery[List](session, (session: DBSession) => toTraversable(session, statement, rawParameters, extractor).toList)
  }

  private[scalikejdbc] def extractOne: WrappedResultSet => A = one
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1] = to1
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2] = to2
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3] = to3
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4] = to4
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5] = to5
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6] = to6
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7] = to7
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8] = to8
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9] = to9
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10] = to10
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11] = to11
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12] = to12
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13] = to13
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14] = to14
  private[scalikejdbc] def transform: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z = extractor
}

final class OneToManies14SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E <: WithExtractor, Z] private[scalikejdbc](
  override val statement: String,
  override private[scalikejdbc] val rawParameters: Seq[Any])(one: WrappedResultSet => A)(to1: WrappedResultSet => Option[B1], to2: WrappedResultSet => Option[B2], to3: WrappedResultSet => Option[B3], to4: WrappedResultSet => Option[B4], to5: WrappedResultSet => Option[B5], to6: WrappedResultSet => Option[B6], to7: WrappedResultSet => Option[B7], to8: WrappedResultSet => Option[B8], to9: WrappedResultSet => Option[B9], to10: WrappedResultSet => Option[B10], to11: WrappedResultSet => Option[B11], to12: WrappedResultSet => Option[B12], to13: WrappedResultSet => Option[B13], to14: WrappedResultSet => Option[B14])(extractor: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toManies(RS => Option[B1])) is specified, use #map((A,B) =>Z) instead."))
    with SQLToCollection[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies14Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

  override def apply[C[_]]()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor, cbf: CanBuildFrom[Nothing, Z, C[Z]]): C[Z] = {
    executeQuery(session, (session: DBSession) => toTraversable(session, statement, rawParameters, extractor).to[C])
  }

  private[scalikejdbc] def extractOne: WrappedResultSet => A = one
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1] = to1
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2] = to2
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3] = to3
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4] = to4
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5] = to5
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6] = to6
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7] = to7
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8] = to8
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9] = to9
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10] = to10
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11] = to11
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12] = to12
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13] = to13
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14] = to14
  private[scalikejdbc] def transform: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z = extractor
}

class OneToManies14SQLToTraversable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E <: WithExtractor, Z](
  override val statement: String,
  override private[scalikejdbc] val rawParameters: Seq[Any])(one: WrappedResultSet => A)(to1: WrappedResultSet => Option[B1], to2: WrappedResultSet => Option[B2], to3: WrappedResultSet => Option[B3], to4: WrappedResultSet => Option[B4], to5: WrappedResultSet => Option[B5], to6: WrappedResultSet => Option[B6], to7: WrappedResultSet => Option[B7], to8: WrappedResultSet => Option[B8], to9: WrappedResultSet => Option[B9], to10: WrappedResultSet => Option[B10], to11: WrappedResultSet => Option[B11], to12: WrappedResultSet => Option[B12], to13: WrappedResultSet => Option[B13], to14: WrappedResultSet => Option[B14])(extractor: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toMany(RS => Option[B1])) is specified, use #map((A,B) =>Z) instead."))
    with SQLToTraversable[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies14Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

  override def apply()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor): Traversable[Z] = {
    executeQuery[Traversable](session, (session: DBSession) => toTraversable(session, statement, rawParameters, extractor))
  }

  private[scalikejdbc] def extractOne: WrappedResultSet => A = one
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1] = to1
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2] = to2
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3] = to3
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4] = to4
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5] = to5
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6] = to6
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7] = to7
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8] = to8
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9] = to9
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10] = to10
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11] = to11
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12] = to12
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13] = to13
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14] = to14
  private[scalikejdbc] def transform: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z = extractor
}

class OneToManies14SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E <: WithExtractor, Z](
  override val statement: String,
  override private[scalikejdbc] val rawParameters: Seq[Any])(one: WrappedResultSet => A)(to1: WrappedResultSet => Option[B1], to2: WrappedResultSet => Option[B2], to3: WrappedResultSet => Option[B3], to4: WrappedResultSet => Option[B4], to5: WrappedResultSet => Option[B5], to6: WrappedResultSet => Option[B6], to7: WrappedResultSet => Option[B7], to8: WrappedResultSet => Option[B8], to9: WrappedResultSet => Option[B9], to10: WrappedResultSet => Option[B10], to11: WrappedResultSet => Option[B11], to12: WrappedResultSet => Option[B12], to13: WrappedResultSet => Option[B13], to14: WrappedResultSet => Option[B14])(extractor: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z)(protected val isSingle: Boolean = true)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toMany(RS => Option[B1])) is specified, use #map((A,B) =>Z) instead."))
    with SQLToOption[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies14Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._
  override def apply()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor): Option[Z] = {
    executeQuery[Option](session, (session: DBSession) => toSingle(toTraversable(session, statement, rawParameters, extractor)))
  }

  private[scalikejdbc] def extractOne: WrappedResultSet => A = one
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1] = to1
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2] = to2
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3] = to3
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4] = to4
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5] = to5
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6] = to6
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7] = to7
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8] = to8
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9] = to9
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10] = to10
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11] = to11
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12] = to12
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13] = to13
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14] = to14
  private[scalikejdbc] def transform: (A, Seq[B1], Seq[B2], Seq[B3], Seq[B4], Seq[B5], Seq[B6], Seq[B7], Seq[B8], Seq[B9], Seq[B10], Seq[B11], Seq[B12], Seq[B13], Seq[B14]) => Z = extractor
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy