1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api.partner
21 
22 import cats.data.NonEmptyList
23 import cats.implicits._
24 import grizzled.slf4j.Logging
25 import org.make.api.extensions.MakeDBExecutionContextComponent
26 import org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner
27 import org.make.api.technical.DatabaseTransactions._
28 import org.make.api.technical.{PersistentCompanion, ShortenedNames}
29 import org.make.api.technical.PersistentServiceUtils.sortOrderQuery
30 import org.make.api.technical.ScalikeSupport._
31 import org.make.core.technical.Pagination
32 import org.make.core.partner.{Partner, PartnerId, PartnerKind}
33 import org.make.core.question.QuestionId
34 import org.make.core.user.UserId
35 import org.make.core.Order
36 import scalikejdbc._
37 
38 import scala.concurrent.Future
39 
40 trait DefaultPersistentPartnerServiceComponent extends PersistentPartnerServiceComponent {
41   this: MakeDBExecutionContextComponent =>
42 
43   override lazy val persistentPartnerService: DefaultPersistentPartnerService = new DefaultPersistentPartnerService
44 
45   class DefaultPersistentPartnerService extends PersistentPartnerService with ShortenedNames {
46 
47     private val partnerAlias = PersistentPartner.alias
48 
49     private val column = PersistentPartner.column
50 
51     override def persist(partner: Partner): Future[Partner] = {
52       implicit val context: EC = writeExecutionContext
53       Future(NamedDB("WRITE").retryableTx { implicit session =>
54         withSQL {
55           insert
56             .into(PersistentPartner)
57             .namedValues(
58               column.id -> partner.partnerId.value,
59               column.name -> partner.name,
60               column.logo -> partner.logo,
61               column.link -> partner.link,
62               column.organisationId -> partner.organisationId.map(_.value),
63               column.partnerKind -> partner.partnerKind,
64               column.questionId -> partner.questionId.value,
65               column.weight -> partner.weight
66             )
67         }.execute()
68       }).as(partner)
69     }
70 
71     override def modify(partner: Partner): Future[Partner] = {
72       implicit val context: EC = writeExecutionContext
73       Future(NamedDB("WRITE").retryableTx { implicit session =>
74         withSQL {
75           update(PersistentPartner)
76             .set(
77               column.name -> partner.name,
78               column.logo -> partner.logo,
79               column.link -> partner.link,
80               column.organisationId -> partner.organisationId.map(_.value),
81               column.partnerKind -> partner.partnerKind,
82               column.questionId -> partner.questionId.value,
83               column.weight -> partner.weight
84             )
85             .where(sqls.eq(column.id, partner.partnerId.value))
86         }.execute()
87       }).as(partner)
88     }
89 
90     override def getById(partnerId: PartnerId): Future[Option[Partner]] = {
91       implicit val context: EC = readExecutionContext
92       Future(NamedDB("READ").retryableTx { implicit session =>
93         withSQL {
94           select
95             .from(PersistentPartner.as(partnerAlias))
96             .where(sqls.eq(partnerAlias.id, partnerId.value))
97         }.map(PersistentPartner.apply()).single()
98       }).map(_.map(_.toPartner))
99     }
100 
101     override def find(
102       offset: Pagination.Offset,
103       end: Option[Pagination.End],
104       sort: Option[String],
105       order: Option[Order],
106       questionId: Option[QuestionId],
107       organisationId: Option[UserId],
108       partnerKind: Option[PartnerKind]
109     ): Future[Seq[Partner]] = {
110       implicit val context: EC = readExecutionContext
111       Future(NamedDB("READ").retryableTx { implicit session =>
112         withSQL {
113           val query: scalikejdbc.PagingSQLBuilder[PersistentPartner] = select
114             .from(PersistentPartner.as(partnerAlias))
115             .where(
116               sqls.toAndConditionOpt(
117                 questionId.map(questionId         => sqls.eq(partnerAlias.questionId, questionId.value)),
118                 organisationId.map(organisationId => sqls.eq(partnerAlias.organisationId, organisationId.value)),
119                 partnerKind.map(kind              => sqls.eq(partnerAlias.partnerKind, kind))
120               )
121             )
122 
123           sortOrderQuery(offset, end, sort, order, query)
124         }.map(PersistentPartner.apply()).list()
125       }).map(_.map(_.toPartner))
126     }
127 
128     override def count(
129       questionId: Option[QuestionId],
130       organisationId: Option[UserId],
131       partnerKind: Option[PartnerKind]
132     ): Future[Int] = {
133       implicit val context: EC = readExecutionContext
134       Future(NamedDB("READ").retryableTx { implicit session =>
135         withSQL {
136           select(sqls.count)
137             .from(PersistentPartner.as(partnerAlias))
138             .where(
139               sqls.toAndConditionOpt(
140                 questionId.map(questionId         => sqls.eq(partnerAlias.questionId, questionId.value)),
141                 organisationId.map(organisationId => sqls.eq(partnerAlias.organisationId, organisationId.value)),
142                 partnerKind.map(kind              => sqls.eq(partnerAlias.partnerKind, kind))
143               )
144             )
145         }.map(_.int(1)).single().getOrElse(0)
146       })
147     }
148 
149     override def delete(partnerId: PartnerId): Future[Unit] = {
150       implicit val context: EC = readExecutionContext
151       Future(NamedDB("WRITE").retryableTx { implicit session =>
152         withSQL {
153           deleteFrom(PersistentPartner)
154             .where(sqls.eq(PersistentPartner.column.id, partnerId.value))
155         }.execute()
156       }).void
157     }
158 
159   }
160 }
161 
162 object DefaultPersistentPartnerServiceComponent {
163 
164   final case class PersistentPartner(
165     id: String,
166     name: String,
167     logo: Option[String],
168     link: Option[String],
169     organisationId: Option[String],
170     partnerKind: String,
171     questionId: String,
172     weight: Float
173   ) {
174     def toPartner: Partner = {
175       Partner(
176         partnerId = PartnerId(id),
177         name = name,
178         logo = logo,
179         link = link,
180         organisationId = organisationId.map(UserId(_)),
181         partnerKind = PartnerKind.withValue(partnerKind),
182         questionId = QuestionId(questionId),
183         weight = weight
184       )
185     }
186   }
187 
188   implicit object PersistentPartner
189       extends PersistentCompanion[PersistentPartner, Partner]
190       with ShortenedNames
191       with Logging {
192 
193     override val columnNames: Seq[String] =
194       Seq("id", "name", "logo", "link", "organisation_id", "partner_kind", "question_id", "weight")
195     final val swaggerAllowableValues = "id,name,logo,link,organisation_id,partner_kind,question_id,weight"
196 
197     override val tableName: String = "partner"
198 
199     override lazy val alias: SyntaxProvider[PersistentPartner] = syntax("partner")
200 
201     override lazy val defaultSortColumns: NonEmptyList[SQLSyntax] = NonEmptyList.of(alias.name)
202 
203     def apply(
204       partnerResultName: ResultName[PersistentPartner] = alias.resultName
205     )(resultSet: WrappedResultSet): PersistentPartner = {
206       PersistentPartner.apply(
207         id = resultSet.string(partnerResultName.id),
208         name = resultSet.string(partnerResultName.name),
209         logo = resultSet.stringOpt(partnerResultName.logo),
210         link = resultSet.stringOpt(partnerResultName.link),
211         organisationId = resultSet.stringOpt(partnerResultName.organisationId),
212         partnerKind = resultSet.string(partnerResultName.partnerKind),
213         questionId = resultSet.string(partnerResultName.questionId),
214         weight = resultSet.float(partnerResultName.weight)
215       )
216     }
217   }
218 
219 }
Line Stmt Id Pos Tree Symbol Tests Code
49 20912 1934 - 1958 Select scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.column org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.column
52 20071 2057 - 2078 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext DefaultPersistentPartnerServiceComponent.this.writeExecutionContext
68 19467 2085 - 2716 Apply cats.Functor.Ops.as cats.implicits.toFunctorOps[scala.concurrent.Future, Boolean](scala.concurrent.Future.apply[Boolean]({ <artifact> val qual$1: org.make.api.technical.DatabaseTransactions.RichDatabase = org.make.api.technical.DatabaseTransactions.RichDatabase({ <artifact> val x$1: String("WRITE") = "WRITE"; <artifact> val x$2: scalikejdbc.SettingsProvider = scalikejdbc.NamedDB.apply$default$2; <artifact> val x$3: scalikejdbc.ConnectionPoolContext = scalikejdbc.NamedDB.apply$default$3("WRITE", x$2); scalikejdbc.NamedDB.apply("WRITE", x$2)(x$3) }); <artifact> val x$4: scalikejdbc.DBSession => Boolean @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.insert.into(org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner).namedValues((DefaultPersistentPartnerService.this.column.field("id"): scalikejdbc.interpolation.SQLSyntax).->[String](partner.partnerId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentPartnerService.this.column.field("name"): scalikejdbc.interpolation.SQLSyntax).->[String](partner.name)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentPartnerService.this.column.field("logo"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](partner.logo)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentPartnerService.this.column.field("link"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](partner.link)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentPartnerService.this.column.field("organisationId"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](partner.organisationId.map[String](((x$1: org.make.core.user.UserId) => x$1.value)))(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentPartnerService.this.column.field("partnerKind"): scalikejdbc.interpolation.SQLSyntax).->[org.make.core.partner.PartnerKind](partner.partnerKind)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.partner.PartnerKind]((PartnerKind: enumeratum.values.StringEnum[org.make.core.partner.PartnerKind]))), (DefaultPersistentPartnerService.this.column.field("questionId"): scalikejdbc.interpolation.SQLSyntax).->[String](partner.questionId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentPartnerService.this.column.field("weight"): scalikejdbc.interpolation.SQLSyntax).->[Float](partner.weight)(scalikejdbc.this.ParameterBinderFactory.floatParameterBinderFactory))).execute.apply()(session)); <artifact> val x$5: scalikejdbc.TxBoundary[Boolean] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Boolean](x$4); qual$1.retryableTx[Boolean](x$4)(x$5) })(context))(cats.implicits.catsStdInstancesForFuture(context)).as[org.make.core.partner.Partner](partner)
72 21127 2820 - 2841 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext org.scalatest.testsuite DefaultPersistentPartnerServiceComponent.this.writeExecutionContext
87 20231 2848 - 3465 Apply cats.Functor.Ops.as org.scalatest.testsuite cats.implicits.toFunctorOps[scala.concurrent.Future, Boolean](scala.concurrent.Future.apply[Boolean]({ <artifact> val qual$1: org.make.api.technical.DatabaseTransactions.RichDatabase = org.make.api.technical.DatabaseTransactions.RichDatabase({ <artifact> val x$1: String("WRITE") = "WRITE"; <artifact> val x$2: scalikejdbc.SettingsProvider = scalikejdbc.NamedDB.apply$default$2; <artifact> val x$3: scalikejdbc.ConnectionPoolContext = scalikejdbc.NamedDB.apply$default$3("WRITE", x$2); scalikejdbc.NamedDB.apply("WRITE", x$2)(x$3) }); <artifact> val x$4: scalikejdbc.DBSession => Boolean @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.update.apply(org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner).set((DefaultPersistentPartnerService.this.column.field("name"): scalikejdbc.interpolation.SQLSyntax).->[String](partner.name)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentPartnerService.this.column.field("logo"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](partner.logo)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentPartnerService.this.column.field("link"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](partner.link)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentPartnerService.this.column.field("organisationId"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](partner.organisationId.map[String](((x$2: org.make.core.user.UserId) => x$2.value)))(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentPartnerService.this.column.field("partnerKind"): scalikejdbc.interpolation.SQLSyntax).->[org.make.core.partner.PartnerKind](partner.partnerKind)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.partner.PartnerKind]((PartnerKind: enumeratum.values.StringEnum[org.make.core.partner.PartnerKind]))), (DefaultPersistentPartnerService.this.column.field("questionId"): scalikejdbc.interpolation.SQLSyntax).->[String](partner.questionId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentPartnerService.this.column.field("weight"): scalikejdbc.interpolation.SQLSyntax).->[Float](partner.weight)(scalikejdbc.this.ParameterBinderFactory.floatParameterBinderFactory)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentPartnerService.this.column.field("id"): scalikejdbc.interpolation.SQLSyntax), partner.partnerId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).execute.apply()(session)); <artifact> val x$5: scalikejdbc.TxBoundary[Boolean] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Boolean](x$4); qual$1.retryableTx[Boolean](x$4)(x$5) })(context))(cats.implicits.catsStdInstancesForFuture(context)).as[org.make.core.partner.Partner](partner)
91 21699 3582 - 3602 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentPartnerServiceComponent.this.readExecutionContext
98 20880 3609 - 3899 ApplyToImplicitArgs scala.concurrent.Future.map scala.concurrent.Future.apply[Option[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]]({ <artifact> val qual$1: org.make.api.technical.DatabaseTransactions.RichDatabase = org.make.api.technical.DatabaseTransactions.RichDatabase({ <artifact> val x$1: String("READ") = "READ"; <artifact> val x$2: scalikejdbc.SettingsProvider = scalikejdbc.NamedDB.apply$default$2; <artifact> val x$3: scalikejdbc.ConnectionPoolContext = scalikejdbc.NamedDB.apply$default$3("READ", x$2); scalikejdbc.NamedDB.apply("READ", x$2)(x$3) }); <artifact> val x$7: scalikejdbc.DBSession => Option[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToOption[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[Nothing](scalikejdbc.`package`.select.from[Nothing](org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.as(DefaultPersistentPartnerService.this.partnerAlias)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentPartnerService.this.partnerAlias.field("id"): scalikejdbc.interpolation.SQLSyntax), partnerId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).map[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner] = org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.apply(eta$0$1)(resultSet)) }).single; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner,scalikejdbc.HasExtractor]]; <artifact> val x$6: scalikejdbc.ConnectionPoolContext = stabilizer$1.apply$default$2(); stabilizer$1.apply()(x$4, x$6, x$5) } }); <artifact> val x$8: scalikejdbc.TxBoundary[Option[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Option[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]](x$7); qual$1.retryableTx[Option[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]](x$7)(x$8) })(context).map[Option[org.make.core.partner.Partner]](((x$3: Option[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]) => x$3.map[org.make.core.partner.Partner](((x$4: org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner) => x$4.toPartner))))(context)
110 20272 4234 - 4254 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentPartnerServiceComponent.this.readExecutionContext
125 21984 4261 - 5009 ApplyToImplicitArgs scala.concurrent.Future.map scala.concurrent.Future.apply[List[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]]({ <artifact> val qual$1: org.make.api.technical.DatabaseTransactions.RichDatabase = org.make.api.technical.DatabaseTransactions.RichDatabase({ <artifact> val x$1: String("READ") = "READ"; <artifact> val x$2: scalikejdbc.SettingsProvider = scalikejdbc.NamedDB.apply$default$2; <artifact> val x$3: scalikejdbc.ConnectionPoolContext = scalikejdbc.NamedDB.apply$default$3("READ", x$2); scalikejdbc.NamedDB.apply("READ", x$2)(x$3) }); <artifact> val x$7: scalikejdbc.DBSession => List[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToList[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]({ val query: scalikejdbc.PagingSQLBuilder[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner] = scalikejdbc.`package`.select.from[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner](org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.as(DefaultPersistentPartnerService.this.partnerAlias)).where(scalikejdbc.`package`.sqls.toAndConditionOpt(questionId.map[scalikejdbc.interpolation.SQLSyntax](((questionId: org.make.core.question.QuestionId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentPartnerService.this.partnerAlias.field("questionId"): scalikejdbc.interpolation.SQLSyntax), questionId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), organisationId.map[scalikejdbc.interpolation.SQLSyntax](((organisationId: org.make.core.user.UserId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentPartnerService.this.partnerAlias.field("organisationId"): scalikejdbc.interpolation.SQLSyntax), organisationId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), partnerKind.map[scalikejdbc.interpolation.SQLSyntax](((kind: org.make.core.partner.PartnerKind) => scalikejdbc.`package`.sqls.eq[org.make.core.partner.PartnerKind]((DefaultPersistentPartnerService.this.partnerAlias.field("partnerKind"): scalikejdbc.interpolation.SQLSyntax), kind)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.partner.PartnerKind]((PartnerKind: enumeratum.values.StringEnum[org.make.core.partner.PartnerKind]))))))); org.make.api.technical.PersistentServiceUtils.sortOrderQuery[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner, org.make.core.partner.Partner](offset, end, sort, order, query)(org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner) }).map[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner] = org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.apply(eta$0$1)(resultSet)) }).list; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner,scalikejdbc.HasExtractor]]; <artifact> val x$6: scalikejdbc.ConnectionPoolContext = stabilizer$1.apply$default$2(); stabilizer$1.apply()(x$4, x$6, x$5) } }); <artifact> val x$8: scalikejdbc.TxBoundary[List[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[List[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]](x$7); qual$1.retryableTx[List[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]](x$7)(x$8) })(context).map[List[org.make.core.partner.Partner]](((x$5: List[org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner]) => x$5.map[org.make.core.partner.Partner](((x$6: org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner) => x$6.toPartner))))(context)
133 20916 5212 - 5232 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentPartnerServiceComponent.this.readExecutionContext
134 20025 5239 - 5853 ApplyToImplicitArgs scala.concurrent.Future.apply scala.concurrent.Future.apply[Int]({ <artifact> val qual$1: org.make.api.technical.DatabaseTransactions.RichDatabase = org.make.api.technical.DatabaseTransactions.RichDatabase({ <artifact> val x$1: String("READ") = "READ"; <artifact> val x$2: scalikejdbc.SettingsProvider = scalikejdbc.NamedDB.apply$default$2; <artifact> val x$3: scalikejdbc.ConnectionPoolContext = scalikejdbc.NamedDB.apply$default$3("READ", x$2); scalikejdbc.NamedDB.apply("READ", x$2)(x$3) }); <artifact> val x$7: scalikejdbc.DBSession => Int @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToOption[Int,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[Nothing](scalikejdbc.`package`.select.apply[Nothing](scalikejdbc.`package`.sqls.count).from(org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.as(DefaultPersistentPartnerService.this.partnerAlias)).where(scalikejdbc.`package`.sqls.toAndConditionOpt(questionId.map[scalikejdbc.interpolation.SQLSyntax](((questionId: org.make.core.question.QuestionId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentPartnerService.this.partnerAlias.field("questionId"): scalikejdbc.interpolation.SQLSyntax), questionId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), organisationId.map[scalikejdbc.interpolation.SQLSyntax](((organisationId: org.make.core.user.UserId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentPartnerService.this.partnerAlias.field("organisationId"): scalikejdbc.interpolation.SQLSyntax), organisationId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), partnerKind.map[scalikejdbc.interpolation.SQLSyntax](((kind: org.make.core.partner.PartnerKind) => scalikejdbc.`package`.sqls.eq[org.make.core.partner.PartnerKind]((DefaultPersistentPartnerService.this.partnerAlias.field("partnerKind"): scalikejdbc.interpolation.SQLSyntax), kind)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.partner.PartnerKind]((PartnerKind: enumeratum.values.StringEnum[org.make.core.partner.PartnerKind])))))))).map[Int](((x$7: scalikejdbc.WrappedResultSet) => x$7.int(1))).single; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[Int,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[Int,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[Int,scalikejdbc.HasExtractor]]; <artifact> val x$6: scalikejdbc.ConnectionPoolContext = stabilizer$1.apply$default$2(); stabilizer$1.apply()(x$4, x$6, x$5) }.getOrElse[Int](0) }); <artifact> val x$8: scalikejdbc.TxBoundary[Int] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Int](x$7); qual$1.retryableTx[Int](x$7)(x$8) })(context)
150 19575 5958 - 5978 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentPartnerServiceComponent.this.readExecutionContext
151 20236 5991 - 5991 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture cats.implicits.catsStdInstancesForFuture(context)
151 21195 5985 - 6203 ApplyToImplicitArgs scala.concurrent.Future.apply scala.concurrent.Future.apply[Boolean]({ <artifact> val qual$1: org.make.api.technical.DatabaseTransactions.RichDatabase = org.make.api.technical.DatabaseTransactions.RichDatabase({ <artifact> val x$1: String("WRITE") = "WRITE"; <artifact> val x$2: scalikejdbc.SettingsProvider = scalikejdbc.NamedDB.apply$default$2; <artifact> val x$3: scalikejdbc.ConnectionPoolContext = scalikejdbc.NamedDB.apply$default$3("WRITE", x$2); scalikejdbc.NamedDB.apply("WRITE", x$2)(x$3) }); <artifact> val x$4: scalikejdbc.DBSession => Boolean @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.deleteFrom.apply(org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner).where(scalikejdbc.`package`.sqls.eq[String]((org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.column.field("id"): scalikejdbc.interpolation.SQLSyntax), partnerId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).execute.apply()(session)); <artifact> val x$5: scalikejdbc.TxBoundary[Boolean] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Boolean](x$4); qual$1.retryableTx[Boolean](x$4)(x$5) })(context)
156 21767 5985 - 6208 Select cats.Functor.Ops.void cats.implicits.toFunctorOps[scala.concurrent.Future, Boolean](scala.concurrent.Future.apply[Boolean]({ <artifact> val qual$1: org.make.api.technical.DatabaseTransactions.RichDatabase = org.make.api.technical.DatabaseTransactions.RichDatabase({ <artifact> val x$1: String("WRITE") = "WRITE"; <artifact> val x$2: scalikejdbc.SettingsProvider = scalikejdbc.NamedDB.apply$default$2; <artifact> val x$3: scalikejdbc.ConnectionPoolContext = scalikejdbc.NamedDB.apply$default$3("WRITE", x$2); scalikejdbc.NamedDB.apply("WRITE", x$2)(x$3) }); <artifact> val x$4: scalikejdbc.DBSession => Boolean @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.deleteFrom.apply(org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner).where(scalikejdbc.`package`.sqls.eq[String]((org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.column.field("id"): scalikejdbc.interpolation.SQLSyntax), partnerId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).execute.apply()(session)); <artifact> val x$5: scalikejdbc.TxBoundary[Boolean] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Boolean](x$4); qual$1.retryableTx[Boolean](x$4)(x$5) })(context))(cats.implicits.catsStdInstancesForFuture(context)).void
175 21040 6544 - 6841 Apply org.make.core.partner.Partner.apply org.make.core.partner.Partner.apply(org.make.core.partner.PartnerId.apply(PersistentPartner.this.id), PersistentPartner.this.name, PersistentPartner.this.logo, PersistentPartner.this.link, PersistentPartner.this.organisationId.map[org.make.core.user.UserId](((x$8: String) => org.make.core.user.UserId.apply(x$8))), org.make.core.partner.PartnerKind.withValue(PersistentPartner.this.partnerKind), org.make.core.question.QuestionId.apply(PersistentPartner.this.questionId), PersistentPartner.this.weight)
176 20841 6583 - 6585 Select org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.id PersistentPartner.this.id
176 20391 6573 - 6586 Apply org.make.core.partner.PartnerId.apply org.make.core.partner.PartnerId.apply(PersistentPartner.this.id)
177 21986 6603 - 6607 Select org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.name PersistentPartner.this.name
178 21034 6624 - 6628 Select org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.logo PersistentPartner.this.logo
179 20033 6645 - 6649 Select org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.link PersistentPartner.this.link
180 21115 6676 - 6705 Apply scala.Option.map PersistentPartner.this.organisationId.map[org.make.core.user.UserId](((x$8: String) => org.make.core.user.UserId.apply(x$8)))
180 21652 6695 - 6704 Apply org.make.core.user.UserId.apply org.make.core.user.UserId.apply(x$8)
181 21735 6729 - 6763 Apply enumeratum.values.ValueEnum.withValue org.make.core.partner.PartnerKind.withValue(PersistentPartner.this.partnerKind)
181 20242 6751 - 6762 Select org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.partnerKind PersistentPartner.this.partnerKind
182 20266 6786 - 6808 Apply org.make.core.question.QuestionId.apply org.make.core.question.QuestionId.apply(PersistentPartner.this.questionId)
182 20851 6797 - 6807 Select org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.questionId PersistentPartner.this.questionId
183 21909 6827 - 6833 Select org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.weight PersistentPartner.this.weight
194 19986 7049 - 7142 Apply scala.collection.SeqFactory.Delegate.apply scala.`package`.Seq.apply[String]("id", "name", "logo", "link", "organisation_id", "partner_kind", "question_id", "weight")
195 21658 7182 - 7249 Literal <nosymbol> "id,name,logo,link,organisation_id,partner_kind,question_id,weight"
197 21123 7288 - 7297 Literal <nosymbol> "partner"
206 21542 7633 - 8174 Apply org.make.api.partner.DefaultPersistentPartnerServiceComponent.PersistentPartner.apply DefaultPersistentPartnerServiceComponent.this.PersistentPartner.apply(resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("id"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("name"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("logo"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("link"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("organisationId"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("partnerKind"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("questionId"): scalikejdbc.interpolation.SQLSyntax))), resultSet.float(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("weight"): scalikejdbc.interpolation.SQLSyntax))))
207 21739 7671 - 7709 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("id"): scalikejdbc.interpolation.SQLSyntax)))
207 20163 7688 - 7708 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("id"): scalikejdbc.interpolation.SQLSyntax))
208 20799 7743 - 7765 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("name"): scalikejdbc.interpolation.SQLSyntax))
208 19831 7726 - 7766 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("name"): scalikejdbc.interpolation.SQLSyntax)))
209 21024 7783 - 7826 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("logo"): scalikejdbc.interpolation.SQLSyntax)))
209 21915 7803 - 7825 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("logo"): scalikejdbc.interpolation.SQLSyntax))
210 21540 7843 - 7886 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("link"): scalikejdbc.interpolation.SQLSyntax)))
210 19993 7863 - 7885 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("link"): scalikejdbc.interpolation.SQLSyntax))
211 21073 7933 - 7965 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("organisationId"): scalikejdbc.interpolation.SQLSyntax))
211 20166 7913 - 7966 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("organisationId"): scalikejdbc.interpolation.SQLSyntax)))
212 21820 8007 - 8036 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("partnerKind"): scalikejdbc.interpolation.SQLSyntax))
212 20806 7990 - 8037 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("partnerKind"): scalikejdbc.interpolation.SQLSyntax)))
213 19838 8077 - 8105 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("questionId"): scalikejdbc.interpolation.SQLSyntax))
213 21871 8060 - 8106 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("questionId"): scalikejdbc.interpolation.SQLSyntax)))
214 20078 8125 - 8166 Apply scalikejdbc.WrappedResultSet.float resultSet.float(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("weight"): scalikejdbc.interpolation.SQLSyntax)))
214 21030 8141 - 8165 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((partnerResultName.field("weight"): scalikejdbc.interpolation.SQLSyntax))