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

scalikejdbc.OneToManies21SQL.scala Maven / Gradle / Ivy

There is a newer version: 4.3.2
Show newest version
/*
 * 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.compat._

private[scalikejdbc] trait OneToManies21Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, 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 extractTo15: WrappedResultSet => Option[B15]
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16]
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17]
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18]
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19]
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20]
  private[scalikejdbc] def extractTo21: WrappedResultSet => Option[B21]
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z

  private[scalikejdbc] def processResultSet(result: (LinkedHashMap[A, (scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21])]),
    rs: WrappedResultSet): LinkedHashMap[A, (scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21])] = {
    val o = extractOne(rs)
    val (to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20, to21) = (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), extractTo15(rs), extractTo16(rs), extractTo17(rs), extractTo18(rs), extractTo19(rs), extractTo20(rs), extractTo21(rs))
    if (result.contains(o)) {
      (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 orElse to15 orElse to16 orElse to17 orElse to18 orElse to19 orElse to20 orElse to21).map { _ =>
        val (ts1, ts2, ts3, ts4, ts5, ts6, ts7, ts8, ts9, ts10, ts11, ts12, ts13, ts14, ts15, ts16, ts17, ts18, ts19, ts20, ts21) = 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),
          to15.map(t => if (ts15.contains(t)) ts15 else ts15 :+ t).getOrElse(ts15),
          to16.map(t => if (ts16.contains(t)) ts16 else ts16 :+ t).getOrElse(ts16),
          to17.map(t => if (ts17.contains(t)) ts17 else ts17 :+ t).getOrElse(ts17),
          to18.map(t => if (ts18.contains(t)) ts18 else ts18 :+ t).getOrElse(ts18),
          to19.map(t => if (ts19.contains(t)) ts19 else ts19 :+ t).getOrElse(ts19),
          to20.map(t => if (ts20.contains(t)) ts20 else ts20 :+ t).getOrElse(ts20),
          to21.map(t => if (ts21.contains(t)) ts21 else ts21 :+ t).getOrElse(ts21)
        )))
      }.getOrElse(result)
    } else {
      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),
          to15.map(t => Vector(t)).getOrElse(Vector.empty),
          to16.map(t => Vector(t)).getOrElse(Vector.empty),
          to17.map(t => Vector(t)).getOrElse(Vector.empty),
          to18.map(t => Vector(t)).getOrElse(Vector.empty),
          to19.map(t => Vector(t)).getOrElse(Vector.empty),
          to20.map(t => Vector(t)).getOrElse(Vector.empty),
          to21.map(t => Vector(t)).getOrElse(Vector.empty)
        ))
      )
    }
  }

  private[scalikejdbc] def toIterable(session: DBSession, sql: String, params: scala.collection.Seq[?], zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z): Iterable[Z] = {
    val attributesSwitcher = createDBSessionAttributesSwitcher
    DBSessionWrapper(session, attributesSwitcher).foldLeft(statement, rawParameters.toSeq*)(LinkedHashMap[A, (scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21])]())(processResultSet).map {
      case (one, (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21)) => zExtractor(one, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21)
    }
  }

}

class OneToManies21SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20], val to21: WrappedResultSet => Option[B21])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => 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(zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z): OneToManies21SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, HasExtractor, Z] = {
    val q: OneToManies21SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, HasExtractor, Z] = new OneToManies21SQL(statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20, to21)(zExtractor)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def toIterable: OneToManies21SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = {
    val q: OneToManies21SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] =new OneToManies21SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20, to21)(zExtractor)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def toList: OneToManies21SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = {
    val q: OneToManies21SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = new OneToManies21SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20, to21)(zExtractor)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def toOption: OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = {
    val q: OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = new OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20, to21)(zExtractor)(true)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def headOption: OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = {
    val q: OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = new OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20, to21)(zExtractor)(false)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def toCollection: OneToManies21SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = {
    val q: OneToManies21SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = new OneToManies21SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20, to21)(zExtractor)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }

  override def single: OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = toOption
  override def first: OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = headOption
  override def list: OneToManies21SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = toList
  override def iterable: OneToManies21SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = toIterable
  override def collection: OneToManies21SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] = toCollection
}

object OneToManies21SQL {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](sqlObject: OneToManies21SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20], WrappedResultSet => Option[B21]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20, sqlObject.to21), sqlObject.zExtractor))
  }
}

class OneToManies21SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20], val to21: WrappedResultSet => Option[B21])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => 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 OneToManies21Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

  override def apply()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor): List[Z] = {
    executeQuery[List](session, (session: DBSession) => toIterable(session, statement, rawParameters, zExtractor).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 extractTo15: WrappedResultSet => Option[B15] = to15
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16] = to16
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17] = to17
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18] = to18
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19] = to19
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20] = to20
  private[scalikejdbc] def extractTo21: WrappedResultSet => Option[B21] = to21
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z = zExtractor
}

object OneToManies21SQLToList {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](sqlObject: OneToManies21SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20], WrappedResultSet => Option[B21]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20, sqlObject.to21), sqlObject.zExtractor))
  }
}

final class OneToManies21SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z] private[scalikejdbc](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20], val to21: WrappedResultSet => Option[B21])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => 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 OneToManies21Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

  override def apply[C[_]]()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor, f: Factory[Z, C[Z]]): C[Z] = {
    executeQuery(session, (session: DBSession) => f.fromSpecific(toIterable(session, statement, rawParameters, zExtractor)))
  }

  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 extractTo15: WrappedResultSet => Option[B15] = to15
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16] = to16
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17] = to17
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18] = to18
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19] = to19
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20] = to20
  private[scalikejdbc] def extractTo21: WrappedResultSet => Option[B21] = to21
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z = zExtractor
}

object OneToManies21SQLToCollection {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](sqlObject: OneToManies21SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20], WrappedResultSet => Option[B21]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20, sqlObject.to21), sqlObject.zExtractor))
  }
}

class OneToManies21SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20], val to21: WrappedResultSet => Option[B21])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => 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 SQLToIterable[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies21Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

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

  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 extractTo15: WrappedResultSet => Option[B15] = to15
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16] = to16
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17] = to17
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18] = to18
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19] = to19
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20] = to20
  private[scalikejdbc] def extractTo21: WrappedResultSet => Option[B21] = to21
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z = zExtractor
}

object OneToManies21SQLToIterable {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](sqlObject: OneToManies21SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20], WrappedResultSet => Option[B21]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20, sqlObject.to21), sqlObject.zExtractor))
  }
}

class OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20], val to21: WrappedResultSet => Option[B21])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z)(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 OneToManies21Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z] {

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

  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 extractTo15: WrappedResultSet => Option[B15] = to15
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16] = to16
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17] = to17
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18] = to18
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19] = to19
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20] = to20
  private[scalikejdbc] def extractTo21: WrappedResultSet => Option[B21] = to21
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z = zExtractor
}

object OneToManies21SQLToOption {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E <: WithExtractor, Z](sqlObject: OneToManies21SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20], WrappedResultSet => Option[B21]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20], scala.collection.Seq[B21]) => Z, Boolean)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20, sqlObject.to21), sqlObject.zExtractor, sqlObject.isSingle))
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy