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.personality
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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality
27 import org.make.api.technical.DatabaseTransactions._
28 import org.make.api.technical.PersistentServiceUtils.sortOrderQuery
29 import org.make.api.technical.{PersistentCompanion, ShortenedNames}
30 import org.make.core.technical.Pagination
31 import org.make.core.personality.{Personality, PersonalityId, PersonalityRoleId}
32 import org.make.core.question.QuestionId
33 import org.make.core.user.UserId
34 import org.make.core.Order
35 import scalikejdbc._
36 
37 import scala.concurrent.Future
38 
39 trait DefaultPersistentQuestionPersonalityServiceComponent extends PersistentQuestionPersonalityServiceComponent {
40   this: MakeDBExecutionContextComponent =>
41 
42   override lazy val persistentQuestionPersonalityService: DefaultPersistentQuestionPersonalityService =
43     new DefaultPersistentQuestionPersonalityService
44 
45   class DefaultPersistentQuestionPersonalityService extends PersistentQuestionPersonalityService with ShortenedNames {
46 
47     private val personalityAlias = PersistentPersonality.alias
48 
49     private val column = PersistentPersonality.column
50 
51     override def persist(personality: Personality): Future[Personality] = {
52       implicit val context: EC = writeExecutionContext
53       Future(NamedDB("WRITE").retryableTx { implicit session =>
54         withSQL {
55           insert
56             .into(PersistentPersonality)
57             .namedValues(
58               column.id -> personality.personalityId.value,
59               column.userId -> personality.userId.value,
60               column.questionId -> personality.questionId.value,
61               column.personalityRoleId -> personality.personalityRoleId.value
62             )
63         }.execute()
64       }).map(_ => personality)
65     }
66 
67     override def modify(personality: Personality): Future[Personality] = {
68       implicit val context: EC = writeExecutionContext
69       Future(NamedDB("WRITE").retryableTx { implicit session =>
70         withSQL {
71           update(PersistentPersonality)
72             .set(
73               column.userId -> personality.userId.value,
74               column.questionId -> personality.questionId.value,
75               column.personalityRoleId -> personality.personalityRoleId.value
76             )
77             .where(sqls.eq(column.id, personality.personalityId.value))
78         }.execute()
79       }).map(_ => personality)
80     }
81 
82     override def getById(personalityId: PersonalityId): Future[Option[Personality]] = {
83       implicit val context: EC = readExecutionContext
84       Future(NamedDB("READ").retryableTx { implicit session =>
85         withSQL {
86           select
87             .from(PersistentPersonality.as(personalityAlias))
88             .where(sqls.eq(personalityAlias.id, personalityId.value))
89         }.map(PersistentPersonality.apply()).single()
90       }).map(_.map(_.toPersonality))
91     }
92 
93     override def find(
94       offset: Pagination.Offset,
95       end: Option[Pagination.End],
96       sort: Option[String],
97       order: Option[Order],
98       userId: Option[UserId],
99       questionId: Option[QuestionId],
100       personalityRoleId: Option[PersonalityRoleId]
101     ): Future[Seq[Personality]] = {
102       implicit val context: EC = readExecutionContext
103       Future(NamedDB("READ").retryableTx { implicit session =>
104         withSQL {
105           val query: scalikejdbc.PagingSQLBuilder[PersistentPersonality] = select
106             .from(PersistentPersonality.as(personalityAlias))
107             .where(
108               sqls.toAndConditionOpt(
109                 userId.map(userId          => sqls.eq(personalityAlias.userId, userId.value)),
110                 questionId.map(questionId  => sqls.eq(personalityAlias.questionId, questionId.value)),
111                 personalityRoleId.map(role => sqls.eq(personalityAlias.personalityRoleId, role.value))
112               )
113             )
114 
115           sortOrderQuery(offset, end, sort, order, query)
116         }.map(PersistentPersonality.apply()).list()
117       }).map(_.map(_.toPersonality))
118     }
119 
120     def count(
121       userId: Option[UserId],
122       questionId: Option[QuestionId],
123       personalityRoleId: Option[PersonalityRoleId]
124     ): Future[Int] = {
125       implicit val context: EC = readExecutionContext
126       Future(NamedDB("READ").retryableTx { implicit session =>
127         withSQL {
128           select(sqls.count)
129             .from(PersistentPersonality.as(personalityAlias))
130             .where(
131               sqls.toAndConditionOpt(
132                 questionId.map(questionId  => sqls.eq(personalityAlias.questionId, questionId.value)),
133                 userId.map(userId          => sqls.eq(personalityAlias.userId, userId.value)),
134                 personalityRoleId.map(role => sqls.eq(personalityAlias.personalityRoleId, role.value))
135               )
136             )
137         }.map(_.int(1)).single().getOrElse(0)
138       })
139     }
140 
141     override def delete(personalityId: PersonalityId): Future[Unit] = {
142       implicit val context: EC = readExecutionContext
143       Future(NamedDB("WRITE").retryableTx { implicit session =>
144         withSQL {
145           deleteFrom(PersistentPersonality)
146             .where(sqls.eq(PersistentPersonality.column.id, personalityId.value))
147         }.execute()
148       }).void
149     }
150 
151   }
152 }
153 
154 object DefaultPersistentQuestionPersonalityServiceComponent {
155 
156   final case class PersistentPersonality(id: String, userId: String, questionId: String, personalityRoleId: String) {
157     def toPersonality: Personality = {
158       Personality(
159         personalityId = PersonalityId(id),
160         userId = UserId(userId),
161         questionId = QuestionId(questionId),
162         personalityRoleId = PersonalityRoleId(personalityRoleId)
163       )
164     }
165   }
166 
167   implicit object PersistentPersonality
168       extends PersistentCompanion[PersistentPersonality, Personality]
169       with ShortenedNames
170       with Logging {
171 
172     override val columnNames: Seq[String] =
173       Seq("id", "user_id", "question_id", "personality_role_id")
174     final val swaggerAllowableValues = "id,user_id,question_id,personality_role_id"
175 
176     override val tableName: String = "personality"
177 
178     override lazy val alias: SyntaxProvider[PersistentPersonality] = syntax("personality")
179 
180     override lazy val defaultSortColumns: NonEmptyList[SQLSyntax] = NonEmptyList.of(alias.id)
181 
182     def apply(
183       personalityResultName: ResultName[PersistentPersonality] = alias.resultName
184     )(resultSet: WrappedResultSet): PersistentPersonality = {
185       PersistentPersonality.apply(
186         id = resultSet.string(personalityResultName.id),
187         userId = resultSet.string(personalityResultName.userId),
188         questionId = resultSet.string(personalityResultName.questionId),
189         personalityRoleId = resultSet.string(personalityResultName.personalityRoleId)
190       )
191     }
192   }
193 
194 }
Line Stmt Id Pos Tree Symbol Tests Code
49 21749 2025 - 2053 Select scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.column org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.column
52 20746 2164 - 2185 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext DefaultPersistentQuestionPersonalityServiceComponent.this.writeExecutionContext
64 19842 2192 - 2676 ApplyToImplicitArgs scala.concurrent.Future.map 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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality).namedValues((DefaultPersistentQuestionPersonalityService.this.column.field("id"): scalikejdbc.interpolation.SQLSyntax).->[String](personality.personalityId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentQuestionPersonalityService.this.column.field("userId"): scalikejdbc.interpolation.SQLSyntax).->[String](personality.userId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentQuestionPersonalityService.this.column.field("questionId"): scalikejdbc.interpolation.SQLSyntax).->[String](personality.questionId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentQuestionPersonalityService.this.column.field("personalityRoleId"): scalikejdbc.interpolation.SQLSyntax).->[String](personality.personalityRoleId.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).map[org.make.core.personality.Personality](((x$1: Boolean) => personality))(context)
68 21452 2792 - 2813 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext DefaultPersistentQuestionPersonalityServiceComponent.this.writeExecutionContext
79 20430 2820 - 3290 ApplyToImplicitArgs scala.concurrent.Future.map 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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality).set((DefaultPersistentQuestionPersonalityService.this.column.field("userId"): scalikejdbc.interpolation.SQLSyntax).->[String](personality.userId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentQuestionPersonalityService.this.column.field("questionId"): scalikejdbc.interpolation.SQLSyntax).->[String](personality.questionId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentQuestionPersonalityService.this.column.field("personalityRoleId"): scalikejdbc.interpolation.SQLSyntax).->[String](personality.personalityRoleId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentQuestionPersonalityService.this.column.field("id"): scalikejdbc.interpolation.SQLSyntax), personality.personalityId.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).map[org.make.core.personality.Personality](((x$2: Boolean) => personality))(context)
83 20008 3419 - 3439 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentQuestionPersonalityServiceComponent.this.readExecutionContext
90 21585 3446 - 3760 ApplyToImplicitArgs scala.concurrent.Future.map scala.concurrent.Future.apply[Option[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]]({ <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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToOption[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[Nothing](scalikejdbc.`package`.select.from[Nothing](org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.as(DefaultPersistentQuestionPersonalityService.this.personalityAlias)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentQuestionPersonalityService.this.personalityAlias.field("id"): scalikejdbc.interpolation.SQLSyntax), personalityId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).map[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality] = org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.apply(eta$0$1)(resultSet)) }).single; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality,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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Option[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]](x$7); qual$1.retryableTx[Option[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]](x$7)(x$8) })(context).map[Option[org.make.core.personality.Personality]](((x$3: Option[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]) => x$3.map[org.make.core.personality.Personality](((x$4: org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality) => x$4.toPersonality))))(context)
102 20647 4103 - 4123 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentQuestionPersonalityServiceComponent.this.readExecutionContext
117 19640 4130 - 4885 ApplyToImplicitArgs scala.concurrent.Future.map scala.concurrent.Future.apply[List[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]]({ <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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToList[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]({ val query: scalikejdbc.PagingSQLBuilder[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality] = scalikejdbc.`package`.select.from[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality](org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.as(DefaultPersistentQuestionPersonalityService.this.personalityAlias)).where(scalikejdbc.`package`.sqls.toAndConditionOpt(userId.map[scalikejdbc.interpolation.SQLSyntax](((userId: org.make.core.user.UserId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentQuestionPersonalityService.this.personalityAlias.field("userId"): scalikejdbc.interpolation.SQLSyntax), userId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), questionId.map[scalikejdbc.interpolation.SQLSyntax](((questionId: org.make.core.question.QuestionId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentQuestionPersonalityService.this.personalityAlias.field("questionId"): scalikejdbc.interpolation.SQLSyntax), questionId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), personalityRoleId.map[scalikejdbc.interpolation.SQLSyntax](((role: org.make.core.personality.PersonalityRoleId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentQuestionPersonalityService.this.personalityAlias.field("personalityRoleId"): scalikejdbc.interpolation.SQLSyntax), role.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))))); org.make.api.technical.PersistentServiceUtils.sortOrderQuery[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality, org.make.core.personality.Personality](offset, end, sort, order, query)(org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality) }).map[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality] = org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.apply(eta$0$1)(resultSet)) }).list; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality,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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[List[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]](x$7); qual$1.retryableTx[List[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]](x$7)(x$8) })(context).map[List[org.make.core.personality.Personality]](((x$5: List[org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality]) => x$5.map[org.make.core.personality.Personality](((x$6: org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality) => x$6.toPersonality))))(context)
125 21830 5083 - 5103 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentQuestionPersonalityServiceComponent.this.readExecutionContext
126 20748 5110 - 5719 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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.as(DefaultPersistentQuestionPersonalityService.this.personalityAlias)).where(scalikejdbc.`package`.sqls.toAndConditionOpt(questionId.map[scalikejdbc.interpolation.SQLSyntax](((questionId: org.make.core.question.QuestionId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentQuestionPersonalityService.this.personalityAlias.field("questionId"): scalikejdbc.interpolation.SQLSyntax), questionId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), userId.map[scalikejdbc.interpolation.SQLSyntax](((userId: org.make.core.user.UserId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentQuestionPersonalityService.this.personalityAlias.field("userId"): scalikejdbc.interpolation.SQLSyntax), userId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), personalityRoleId.map[scalikejdbc.interpolation.SQLSyntax](((role: org.make.core.personality.PersonalityRoleId) => scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentQuestionPersonalityService.this.personalityAlias.field("personalityRoleId"): scalikejdbc.interpolation.SQLSyntax), role.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)))))).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)
142 19848 5832 - 5852 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentQuestionPersonalityServiceComponent.this.readExecutionContext
143 21506 5859 - 6089 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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality).where(scalikejdbc.`package`.sqls.eq[String]((org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.column.field("id"): scalikejdbc.interpolation.SQLSyntax), personalityId.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)
143 20435 5865 - 5865 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture cats.implicits.catsStdInstancesForFuture(context)
148 19990 5859 - 6094 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.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality).where(scalikejdbc.`package`.sqls.eq[String]((org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.column.field("id"): scalikejdbc.interpolation.SQLSyntax), personalityId.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
158 19997 6335 - 6541 Apply org.make.core.personality.Personality.apply org.make.core.personality.Personality.apply(org.make.core.personality.PersonalityId.apply(PersistentPersonality.this.id), org.make.core.user.UserId.apply(PersistentPersonality.this.userId), org.make.core.question.QuestionId.apply(PersistentPersonality.this.questionId), org.make.core.personality.PersonalityRoleId.apply(PersistentPersonality.this.personalityRoleId))
159 21551 6386 - 6388 Select org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.id PersistentPersonality.this.id
159 20653 6372 - 6389 Apply org.make.core.personality.PersonalityId.apply org.make.core.personality.PersonalityId.apply(PersistentPersonality.this.id)
160 19754 6415 - 6421 Select org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.userId PersistentPersonality.this.userId
160 21225 6408 - 6422 Apply org.make.core.user.UserId.apply org.make.core.user.UserId.apply(PersistentPersonality.this.userId)
161 19808 6445 - 6467 Apply org.make.core.question.QuestionId.apply org.make.core.question.QuestionId.apply(PersistentPersonality.this.questionId)
161 20859 6456 - 6466 Select org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.questionId PersistentPersonality.this.questionId
162 21513 6515 - 6532 Select org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.personalityRoleId PersistentPersonality.this.personalityRoleId
162 20558 6497 - 6533 Apply org.make.core.personality.PersonalityRoleId.apply org.make.core.personality.PersonalityRoleId.apply(PersistentPersonality.this.personalityRoleId)
173 21664 6761 - 6819 Apply scala.collection.SeqFactory.Delegate.apply scala.`package`.Seq.apply[String]("id", "user_id", "question_id", "personality_role_id")
174 20695 6859 - 6903 Literal <nosymbol> "id,user_id,question_id,personality_role_id"
176 19761 6942 - 6955 Literal <nosymbol> "personality"
185 19714 7309 - 7626 Apply org.make.api.personality.DefaultPersistentQuestionPersonalityServiceComponent.PersistentPersonality.apply DefaultPersistentQuestionPersonalityServiceComponent.this.PersistentPersonality.apply(resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("id"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("userId"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("questionId"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("personalityRoleId"): scalikejdbc.interpolation.SQLSyntax))))
186 20811 7351 - 7393 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("id"): scalikejdbc.interpolation.SQLSyntax)))
186 21229 7368 - 7392 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("id"): scalikejdbc.interpolation.SQLSyntax))
187 21476 7412 - 7458 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("userId"): scalikejdbc.interpolation.SQLSyntax)))
187 19909 7429 - 7457 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("userId"): scalikejdbc.interpolation.SQLSyntax))
188 20006 7481 - 7531 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("questionId"): scalikejdbc.interpolation.SQLSyntax)))
188 20565 7498 - 7530 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("questionId"): scalikejdbc.interpolation.SQLSyntax))
189 20646 7561 - 7618 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("personalityRoleId"): scalikejdbc.interpolation.SQLSyntax)))
189 21631 7578 - 7617 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((personalityResultName.field("personalityRoleId"): scalikejdbc.interpolation.SQLSyntax))