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.technical.crm
21 
22 import grizzled.slf4j.Logging
23 import org.make.api.extensions.MakeDBExecutionContextComponent
24 import org.make.api.technical.ShortenedNames
25 import scalikejdbc._
26 
27 import scala.concurrent.Future
28 import org.make.api.technical.DatabaseTransactions._
29 import org.make.core.reference.Country
30 
31 trait DefaultPersistentCrmUserServiceComponent extends PersistentCrmUserServiceComponent with ShortenedNames {
32   self: MakeDBExecutionContextComponent =>
33 
34   override lazy val persistentCrmUserService: DefaultPersistentCrmUserService = new DefaultPersistentCrmUserService
35 
36   class DefaultPersistentCrmUserService extends PersistentCrmUserService {
37 
38     private val PersistentCrmUser = PersistentCrmUserCompanion
39 
40     override def persist(users: Seq[PersistentCrmUser]): Future[Seq[PersistentCrmUser]] = {
41       implicit val cxt: EC = writeExecutionContext
42       Future(NamedDB("WRITE").retryableTx { implicit session =>
43         users.foreach {
44           user =>
45             withSQL {
46               insert
47                 .into(PersistentCrmUser)
48                 .namedValues(
49                   PersistentCrmUser.column.userId -> user.userId,
50                   PersistentCrmUser.column.fullName -> user.fullName,
51                   PersistentCrmUser.column.accountCreationDate -> user.accountCreationDate,
52                   PersistentCrmUser.column.accountCreationOperation -> user.accountCreationOperation,
53                   PersistentCrmUser.column.accountCreationOrigin -> user.accountCreationOrigin,
54                   PersistentCrmUser.column.accountCreationSource -> user.accountCreationSource,
55                   PersistentCrmUser.column.accountCreationLocation -> user.accountCreationLocation,
56                   PersistentCrmUser.column.dateOfBirth -> user.dateOfBirth,
57                   PersistentCrmUser.column.daysBeforeDeletion -> user.daysBeforeDeletion,
58                   PersistentCrmUser.column.daysOfActivity -> user.daysOfActivity,
59                   PersistentCrmUser.column.daysOfActivity30d -> user.daysOfActivity30d,
60                   PersistentCrmUser.column.email -> user.email,
61                   PersistentCrmUser.column.emailHardbounceStatus -> user.emailHardbounceStatus,
62                   PersistentCrmUser.column.emailValidationStatus -> user.emailValidationStatus,
63                   PersistentCrmUser.column.eventsCount -> user.eventsCount,
64                   PersistentCrmUser.column.favoriteCountry -> user.favoriteCountry,
65                   PersistentCrmUser.column.favoriteLanguage -> user.favoriteLanguage,
66                   PersistentCrmUser.column.firstContributionDate -> user.firstContributionDate,
67                   PersistentCrmUser.column.firstname -> user.firstname,
68                   PersistentCrmUser.column.lastActivityDate -> user.lastActivityDate,
69                   PersistentCrmUser.column.lastContributionDate -> user.lastContributionDate,
70                   PersistentCrmUser.column.operationActivity -> user.operationActivity,
71                   PersistentCrmUser.column.sessionsCount -> user.sessionsCount,
72                   PersistentCrmUser.column.sourceActivity -> user.sourceActivity,
73                   PersistentCrmUser.column.totalNumberProposals -> user.totalNumberProposals,
74                   PersistentCrmUser.column.totalNumberVotes -> user.totalNumberVotes,
75                   PersistentCrmUser.column.unsubscribeStatus -> user.unsubscribeStatus,
76                   PersistentCrmUser.column.userType -> user.userType,
77                   PersistentCrmUser.column.accountType -> user.accountType,
78                   PersistentCrmUser.column.zipcode -> user.zipcode
79                 )
80             }.execute()
81         }
82       }).map(_ => users)
83     }
84 
85     override def list(
86       maybeUnsubscribed: Option[Boolean],
87       hardBounce: Boolean,
88       offset: Int,
89       numberPerPage: Int
90     ): Future[Seq[PersistentCrmUser]] = {
91       implicit val cxt: EC = readExecutionContext
92       Future(NamedDB("READ").retryableTx { implicit session =>
93         withSQL {
94           select.all
95             .from(PersistentCrmUser.as(PersistentCrmUser.alias))
96             .where(
97               sqls
98                 .eq(PersistentCrmUser.alias.emailHardbounceStatus, hardBounce)
99                 .and(
100                   maybeUnsubscribed
101                     .map(unsubscribed => sqls.eq(PersistentCrmUser.alias.unsubscribeStatus, unsubscribed))
102                 )
103             )
104             .orderBy(PersistentCrmUser.alias.accountCreationDate.asc, PersistentCrmUser.alias.email.asc)
105             .limit(numberPerPage)
106             .offset(offset)
107         }.map(PersistentCrmUser.apply()).list()
108       })
109     }
110 
111     override def getActiveConsultationUsers(
112       consultationSlug: String,
113       country: Country
114     ): Future[List[PersistentCrmUser]] = {
115       implicit val cxt: EC = readExecutionContext
116       val predicate =
117         sqls
118           .eq(PersistentCrmUser.alias.emailValidationStatus, true)
119           .and(sqls.eq(PersistentCrmUser.alias.emailHardbounceStatus, false))
120           .and(sqls.eq(PersistentCrmUser.alias.unsubscribeStatus, false))
121           .and(sqls.like(PersistentCrmUser.alias.operationActivity, s"%$consultationSlug%"))
122           .and(sqls.eq(PersistentCrmUser.alias.favoriteCountry, country.value))
123 
124       Future(NamedDB("READ").retryableTx { implicit session =>
125         withSQL {
126           select
127             .from(PersistentCrmUser.as(PersistentCrmUser.alias))
128             .where(predicate)
129         }.map(PersistentCrmUser.apply()).list()
130       })
131     }
132 
133     override def getActiveConsultationUsersCount(consultationSlug: String): Future[Int] = {
134       implicit val cxt: EC = readExecutionContext
135       val predicate =
136         sqls
137           .eq(PersistentCrmUser.alias.emailValidationStatus, true)
138           .and(sqls.eq(PersistentCrmUser.alias.emailHardbounceStatus, false))
139           .and(sqls.eq(PersistentCrmUser.alias.unsubscribeStatus, false))
140           .and(sqls.like(PersistentCrmUser.alias.operationActivity, s"%$consultationSlug%"))
141 
142       Future(NamedDB("READ").retryableTx { implicit session =>
143         withSQL {
144           select(sqls.count)
145             .from(PersistentCrmUser.as(PersistentCrmUser.alias))
146             .where(predicate)
147         }.map(_.int(1)).single().getOrElse(0)
148       })
149     }
150 
151     override def findInactiveUsers(offset: Int, numberPerPage: Int): Future[Seq[PersistentCrmUser]] = {
152       implicit val cxt: EC = readExecutionContext
153       Future(NamedDB("READ").retryableTx { implicit session =>
154         withSQL {
155           select.all
156             .from(PersistentCrmUser.as(PersistentCrmUser.alias))
157             .where(sqls.le(PersistentCrmUser.alias.daysBeforeDeletion, 0))
158             .orderBy(PersistentCrmUser.alias.email.asc)
159             .limit(numberPerPage)
160             .offset(offset)
161         }.map(PersistentCrmUser.apply()).list()
162       })
163     }
164 
165     override def truncateCrmUsers(): Future[Unit] = {
166       implicit val cxt: EC = writeExecutionContext
167       Future(NamedDB("WRITE").retryableTx { implicit session =>
168         SQL(s"truncate table ${PersistentCrmUser.tableName}").execute()
169         ()
170       })
171     }
172   }
173 }
174 
175 object PersistentCrmUserCompanion extends SQLSyntaxSupport[PersistentCrmUser] with ShortenedNames with Logging {
176   override val columnNames: Seq[String] =
177     Seq(
178       "user_id",
179       "email",
180       "full_name",
181       "firstname",
182       "zipcode",
183       "date_of_birth",
184       "email_validation_status",
185       "email_hardbounce_status",
186       "unsubscribe_status",
187       "account_creation_date",
188       "account_creation_source",
189       "account_creation_origin",
190       "account_creation_operation",
191       "account_creation_location",
192       "favorite_country",
193       "favorite_language",
194       "total_number_proposals",
195       "total_number_votes",
196       "first_contribution_date",
197       "last_contribution_date",
198       "operation_activity",
199       "source_activity",
200       "days_of_activity",
201       "days_of_activity30d",
202       "user_type",
203       "account_type",
204       "days_before_deletion",
205       "last_activity_date",
206       "sessions_count",
207       "events_count"
208     )
209 
210   override val tableName: String = "crm_user"
211 
212   lazy val alias: SyntaxProvider[PersistentCrmUser] = syntax("crm_user")
213 
214   def apply(
215     resultName: ResultName[PersistentCrmUser] = alias.resultName
216   )(resultSet: WrappedResultSet): PersistentCrmUser = {
217     PersistentCrmUser(
218       userId = resultSet.string(resultName.userId),
219       email = resultSet.string(resultName.email),
220       fullName = resultSet.string(resultName.fullName),
221       firstname = resultSet.string(resultName.firstname),
222       zipcode = resultSet.stringOpt(resultName.zipcode),
223       dateOfBirth = resultSet.stringOpt(resultName.dateOfBirth),
224       emailValidationStatus = resultSet.boolean(resultName.emailValidationStatus),
225       emailHardbounceStatus = resultSet.boolean(resultName.emailHardbounceStatus),
226       unsubscribeStatus = resultSet.boolean(resultName.unsubscribeStatus),
227       accountCreationDate = resultSet.stringOpt(resultName.accountCreationDate),
228       accountCreationSource = resultSet.stringOpt(resultName.accountCreationSource),
229       accountCreationOrigin = resultSet.stringOpt(resultName.accountCreationOrigin),
230       accountCreationOperation = resultSet.stringOpt(resultName.accountCreationOperation),
231       accountCreationLocation = resultSet.stringOpt(resultName.accountCreationLocation),
232       favoriteCountry = resultSet.stringOpt(resultName.favoriteCountry),
233       favoriteLanguage = resultSet.stringOpt(resultName.favoriteLanguage),
234       totalNumberProposals = resultSet.intOpt(resultName.totalNumberProposals),
235       totalNumberVotes = resultSet.intOpt(resultName.totalNumberVotes),
236       firstContributionDate = resultSet.stringOpt(resultName.firstContributionDate),
237       lastContributionDate = resultSet.stringOpt(resultName.lastContributionDate),
238       operationActivity = resultSet.stringOpt(resultName.operationActivity),
239       sourceActivity = resultSet.stringOpt(resultName.sourceActivity),
240       daysOfActivity = resultSet.intOpt(resultName.daysOfActivity),
241       daysOfActivity30d = resultSet.intOpt(resultName.daysOfActivity30d),
242       userType = resultSet.stringOpt(resultName.userType),
243       accountType = resultSet.stringOpt(resultName.accountType),
244       daysBeforeDeletion = resultSet.intOpt(resultName.daysBeforeDeletion),
245       lastActivityDate = resultSet.stringOpt(resultName.lastActivityDate),
246       sessionsCount = resultSet.intOpt(resultName.sessionsCount),
247       eventsCount = resultSet.intOpt(resultName.eventsCount)
248     )
249   }
250 
251 }
Line Stmt Id Pos Tree Symbol Tests Code
41 21925 1598 - 1619 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext org.scalatest.testsuite DefaultPersistentCrmUserServiceComponent.this.writeExecutionContext
82 20925 1626 - 4455 ApplyToImplicitArgs scala.concurrent.Future.map org.scalatest.testsuite scala.concurrent.Future.apply[Unit]({ <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 => Unit @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => users.foreach[Boolean](((user: org.make.api.technical.crm.PersistentCrmUser) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.insert.into(DefaultPersistentCrmUserService.this.PersistentCrmUser).namedValues((DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("userId"): scalikejdbc.interpolation.SQLSyntax).->[String](user.userId)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("fullName"): scalikejdbc.interpolation.SQLSyntax).->[String](user.fullName)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("accountCreationDate"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.accountCreationDate)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("accountCreationOperation"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.accountCreationOperation)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("accountCreationOrigin"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.accountCreationOrigin)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("accountCreationSource"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.accountCreationSource)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("accountCreationLocation"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.accountCreationLocation)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("dateOfBirth"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.dateOfBirth)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("daysBeforeDeletion"): scalikejdbc.interpolation.SQLSyntax).->[Option[Int]](user.daysBeforeDeletion)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[Int](scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("daysOfActivity"): scalikejdbc.interpolation.SQLSyntax).->[Option[Int]](user.daysOfActivity)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[Int](scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("daysOfActivity30d"): scalikejdbc.interpolation.SQLSyntax).->[Option[Int]](user.daysOfActivity30d)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[Int](scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("email"): scalikejdbc.interpolation.SQLSyntax).->[String](user.email)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax).->[Boolean](user.emailHardbounceStatus)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("emailValidationStatus"): scalikejdbc.interpolation.SQLSyntax).->[Boolean](user.emailValidationStatus)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("eventsCount"): scalikejdbc.interpolation.SQLSyntax).->[Option[Int]](user.eventsCount)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[Int](scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("favoriteCountry"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.favoriteCountry)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("favoriteLanguage"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.favoriteLanguage)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("firstContributionDate"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.firstContributionDate)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("firstname"): scalikejdbc.interpolation.SQLSyntax).->[String](user.firstname)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("lastActivityDate"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.lastActivityDate)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("lastContributionDate"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.lastContributionDate)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("operationActivity"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.operationActivity)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("sessionsCount"): scalikejdbc.interpolation.SQLSyntax).->[Option[Int]](user.sessionsCount)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[Int](scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("sourceActivity"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.sourceActivity)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("totalNumberProposals"): scalikejdbc.interpolation.SQLSyntax).->[Option[Int]](user.totalNumberProposals)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[Int](scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("totalNumberVotes"): scalikejdbc.interpolation.SQLSyntax).->[Option[Int]](user.totalNumberVotes)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[Int](scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax).->[Boolean](user.unsubscribeStatus)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("userType"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.userType)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("accountType"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.accountType)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentCrmUserService.this.PersistentCrmUser.column.field("zipcode"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](user.zipcode)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)))).execute.apply()(session)))); <artifact> val x$5: scalikejdbc.TxBoundary[Unit] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Unit](x$4); qual$1.retryableTx[Unit](x$4)(x$5) })(cxt).map[Seq[org.make.api.technical.crm.PersistentCrmUser]](((x$1: Unit) => users))(cxt)
91 20560 4670 - 4690 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext org.scalatest.testsuite DefaultPersistentCrmUserServiceComponent.this.readExecutionContext
92 19585 4697 - 5396 ApplyToImplicitArgs scala.concurrent.Future.apply org.scalatest.testsuite scala.concurrent.Future.apply[List[org.make.api.technical.crm.PersistentCrmUser]]({ <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.technical.crm.PersistentCrmUser] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToList[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[Nothing](scalikejdbc.`package`.select.all[Nothing].from(DefaultPersistentCrmUserService.this.PersistentCrmUser.as(DefaultPersistentCrmUserService.this.PersistentCrmUser.alias)).where(scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax), hardBounce)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory).and(maybeUnsubscribed.map[scalikejdbc.interpolation.SQLSyntax](((unsubscribed: Boolean) => scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax), unsubscribed)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory))))).orderBy((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("accountCreationDate"): scalikejdbc.interpolation.SQLSyntax).asc, (DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("email"): scalikejdbc.interpolation.SQLSyntax).asc).limit(numberPerPage).offset(offset)).map[org.make.api.technical.crm.PersistentCrmUser]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.technical.crm.PersistentCrmUser] = DefaultPersistentCrmUserService.this.PersistentCrmUser.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => DefaultPersistentCrmUserService.this.PersistentCrmUser.apply(eta$0$1)(resultSet)) }).list; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,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.technical.crm.PersistentCrmUser]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[List[org.make.api.technical.crm.PersistentCrmUser]](x$7); qual$1.retryableTx[List[org.make.api.technical.crm.PersistentCrmUser]](x$7)(x$8) })(cxt)
115 21139 5576 - 5596 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentCrmUserServiceComponent.this.readExecutionContext
118 20245 5693 - 5697 Literal <nosymbol> true
118 19766 5645 - 5645 Select scalikejdbc.ParameterBinderFactory.booleanParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory
119 20395 5721 - 5721 Select scalikejdbc.ParameterBinderFactory.booleanParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory
119 21232 5769 - 5774 Literal <nosymbol> false
119 21930 5714 - 5775 ApplyToImplicitArgs scalikejdbc.interpolation.SQLSyntax.eq scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax), false)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory)
120 20569 5799 - 5799 Select scalikejdbc.ParameterBinderFactory.booleanParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory
120 19587 5792 - 5849 ApplyToImplicitArgs scalikejdbc.interpolation.SQLSyntax.eq scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax), false)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory)
120 21043 5843 - 5848 Literal <nosymbol> false
121 21197 5866 - 5942 Apply scalikejdbc.interpolation.SQLSyntax.like scalikejdbc.`package`.sqls.like((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("operationActivity"): scalikejdbc.interpolation.SQLSyntax), ("%".+(consultationSlug).+("%"): String))
122 21283 5959 - 6022 ApplyToImplicitArgs scalikejdbc.interpolation.SQLSyntax.eq scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("favoriteCountry"): scalikejdbc.interpolation.SQLSyntax), country.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)
122 20398 5627 - 6023 Apply scalikejdbc.interpolation.SQLSyntax.and scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("emailValidationStatus"): scalikejdbc.interpolation.SQLSyntax), true)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory).and(scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax), false)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory)).and(scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax), false)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory)).and(scalikejdbc.`package`.sqls.like((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("operationActivity"): scalikejdbc.interpolation.SQLSyntax), ("%".+(consultationSlug).+("%"): String))).and(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("favoriteCountry"): scalikejdbc.interpolation.SQLSyntax), country.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))
122 20251 6008 - 6021 Select org.make.core.reference.Country.value country.value
122 19715 5966 - 5966 Select scalikejdbc.ParameterBinderFactory.stringParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory
124 21917 6031 - 6274 ApplyToImplicitArgs scala.concurrent.Future.apply scala.concurrent.Future.apply[List[org.make.api.technical.crm.PersistentCrmUser]]({ <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.technical.crm.PersistentCrmUser] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToList[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[Nothing](scalikejdbc.`package`.select.from[Nothing](DefaultPersistentCrmUserService.this.PersistentCrmUser.as(DefaultPersistentCrmUserService.this.PersistentCrmUser.alias)).where(predicate)).map[org.make.api.technical.crm.PersistentCrmUser]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.technical.crm.PersistentCrmUser] = DefaultPersistentCrmUserService.this.PersistentCrmUser.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => DefaultPersistentCrmUserService.this.PersistentCrmUser.apply(eta$0$1)(resultSet)) }).list; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,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.technical.crm.PersistentCrmUser]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[List[org.make.api.technical.crm.PersistentCrmUser]](x$7); qual$1.retryableTx[List[org.make.api.technical.crm.PersistentCrmUser]](x$7)(x$8) })(cxt)
134 21048 6403 - 6423 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentCrmUserServiceComponent.this.readExecutionContext
137 20575 6520 - 6524 Literal <nosymbol> true
137 19546 6472 - 6472 Select scalikejdbc.ParameterBinderFactory.booleanParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory
138 21840 6541 - 6602 ApplyToImplicitArgs scalikejdbc.interpolation.SQLSyntax.eq scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax), false)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory)
138 20168 6548 - 6548 Select scalikejdbc.ParameterBinderFactory.booleanParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory
138 21199 6596 - 6601 Literal <nosymbol> false
139 21923 6619 - 6676 ApplyToImplicitArgs scalikejdbc.interpolation.SQLSyntax.eq scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax), false)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory)
139 21289 6670 - 6675 Literal <nosymbol> false
139 20370 6626 - 6626 Select scalikejdbc.ParameterBinderFactory.booleanParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory
140 20455 6454 - 6770 Apply scalikejdbc.interpolation.SQLSyntax.and scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("emailValidationStatus"): scalikejdbc.interpolation.SQLSyntax), true)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory).and(scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax), false)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory)).and(scalikejdbc.`package`.sqls.eq[Boolean]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax), false)(scalikejdbc.this.ParameterBinderFactory.booleanParameterBinderFactory)).and(scalikejdbc.`package`.sqls.like((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("operationActivity"): scalikejdbc.interpolation.SQLSyntax), ("%".+(consultationSlug).+("%"): String)))
140 20949 6693 - 6769 Apply scalikejdbc.interpolation.SQLSyntax.like scalikejdbc.`package`.sqls.like((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("operationActivity"): scalikejdbc.interpolation.SQLSyntax), ("%".+(consultationSlug).+("%"): String))
142 19552 6778 - 7031 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(DefaultPersistentCrmUserService.this.PersistentCrmUser.as(DefaultPersistentCrmUserService.this.PersistentCrmUser.alias)).where(predicate)).map[Int](((x$2: scalikejdbc.WrappedResultSet) => x$2.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) })(cxt)
152 21182 7172 - 7192 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext org.scalatest.testsuite DefaultPersistentCrmUserServiceComponent.this.readExecutionContext
153 20172 7199 - 7609 ApplyToImplicitArgs scala.concurrent.Future.apply org.scalatest.testsuite scala.concurrent.Future.apply[List[org.make.api.technical.crm.PersistentCrmUser]]({ <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.technical.crm.PersistentCrmUser] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToList[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[Nothing](scalikejdbc.`package`.select.all[Nothing].from(DefaultPersistentCrmUserService.this.PersistentCrmUser.as(DefaultPersistentCrmUserService.this.PersistentCrmUser.alias)).where(scalikejdbc.`package`.sqls.le[Int]((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("daysBeforeDeletion"): scalikejdbc.interpolation.SQLSyntax), 0)(scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory)).orderBy((DefaultPersistentCrmUserService.this.PersistentCrmUser.alias.field("email"): scalikejdbc.interpolation.SQLSyntax).asc).limit(numberPerPage).offset(offset)).map[org.make.api.technical.crm.PersistentCrmUser]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.technical.crm.PersistentCrmUser] = DefaultPersistentCrmUserService.this.PersistentCrmUser.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => DefaultPersistentCrmUserService.this.PersistentCrmUser.apply(eta$0$1)(resultSet)) }).list; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.technical.crm.PersistentCrmUser,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.technical.crm.PersistentCrmUser]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[List[org.make.api.technical.crm.PersistentCrmUser]](x$7); qual$1.retryableTx[List[org.make.api.technical.crm.PersistentCrmUser]](x$7)(x$8) })(cxt)
166 21741 7700 - 7721 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext org.scalatest.testsuite DefaultPersistentCrmUserServiceComponent.this.writeExecutionContext
167 21254 7728 - 7877 ApplyToImplicitArgs scala.concurrent.Future.apply org.scalatest.testsuite scala.concurrent.Future.apply[Unit]({ <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 => Unit @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { scalikejdbc.SQL.apply[Nothing](("truncate table ".+(DefaultPersistentCrmUserService.this.PersistentCrmUser.tableName): String)).execute.apply()(session); () }); <artifact> val x$5: scalikejdbc.TxBoundary[Unit] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Unit](x$4); qual$1.retryableTx[Unit](x$4)(x$5) })(cxt)
177 20377 8050 - 8862 Apply scala.collection.SeqFactory.Delegate.apply org.scalatest.testsuite scala.`package`.Seq.apply[String]("user_id", "email", "full_name", "firstname", "zipcode", "date_of_birth", "email_validation_status", "email_hardbounce_status", "unsubscribe_status", "account_creation_date", "account_creation_source", "account_creation_origin", "account_creation_operation", "account_creation_location", "favorite_country", "favorite_language", "total_number_proposals", "total_number_votes", "first_contribution_date", "last_contribution_date", "operation_activity", "source_activity", "days_of_activity", "days_of_activity30d", "user_type", "account_type", "days_before_deletion", "last_activity_date", "sessions_count", "events_count")
210 21880 8899 - 8909 Literal <nosymbol> org.scalatest.testsuite "crm_user"
217 20868 9123 - 11317 Apply org.make.api.technical.crm.PersistentCrmUser.apply PersistentCrmUser.apply(resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("userId"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("email"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("fullName"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("firstname"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("zipcode"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("dateOfBirth"): scalikejdbc.interpolation.SQLSyntax))), resultSet.boolean(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("emailValidationStatus"): scalikejdbc.interpolation.SQLSyntax))), resultSet.boolean(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax))), resultSet.boolean(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationDate"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationSource"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationOrigin"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationOperation"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationLocation"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("favoriteCountry"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("favoriteLanguage"): scalikejdbc.interpolation.SQLSyntax))), resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("totalNumberProposals"): scalikejdbc.interpolation.SQLSyntax))), resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("totalNumberVotes"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("firstContributionDate"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("lastContributionDate"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("operationActivity"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("sourceActivity"): scalikejdbc.interpolation.SQLSyntax))), resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysOfActivity"): scalikejdbc.interpolation.SQLSyntax))), resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysOfActivity30d"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("userType"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountType"): scalikejdbc.interpolation.SQLSyntax))), resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysBeforeDeletion"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("lastActivityDate"): scalikejdbc.interpolation.SQLSyntax))), resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("sessionsCount"): scalikejdbc.interpolation.SQLSyntax))), resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("eventsCount"): scalikejdbc.interpolation.SQLSyntax))))
218 20951 9174 - 9191 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("userId"): scalikejdbc.interpolation.SQLSyntax))
218 20568 9157 - 9192 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("userId"): scalikejdbc.interpolation.SQLSyntax)))
219 21089 9208 - 9242 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("email"): scalikejdbc.interpolation.SQLSyntax)))
219 19508 9225 - 9241 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("email"): scalikejdbc.interpolation.SQLSyntax))
220 21833 9261 - 9298 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("fullName"): scalikejdbc.interpolation.SQLSyntax)))
220 20176 9278 - 9297 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("fullName"): scalikejdbc.interpolation.SQLSyntax))
221 21370 9335 - 9355 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("firstname"): scalikejdbc.interpolation.SQLSyntax))
221 20329 9318 - 9356 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("firstname"): scalikejdbc.interpolation.SQLSyntax)))
222 21884 9394 - 9412 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("zipcode"): scalikejdbc.interpolation.SQLSyntax))
222 20953 9374 - 9413 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("zipcode"): scalikejdbc.interpolation.SQLSyntax)))
223 19617 9435 - 9478 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("dateOfBirth"): scalikejdbc.interpolation.SQLSyntax)))
223 20088 9455 - 9477 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("dateOfBirth"): scalikejdbc.interpolation.SQLSyntax))
224 21217 9528 - 9560 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("emailValidationStatus"): scalikejdbc.interpolation.SQLSyntax))
224 20145 9510 - 9561 Apply scalikejdbc.WrappedResultSet.boolean resultSet.boolean(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("emailValidationStatus"): scalikejdbc.interpolation.SQLSyntax)))
225 21838 9611 - 9643 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax))
225 21335 9593 - 9644 Apply scalikejdbc.WrappedResultSet.boolean resultSet.boolean(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("emailHardbounceStatus"): scalikejdbc.interpolation.SQLSyntax)))
226 20367 9690 - 9718 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax))
226 21888 9672 - 9719 Apply scalikejdbc.WrappedResultSet.boolean resultSet.boolean(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("unsubscribeStatus"): scalikejdbc.interpolation.SQLSyntax)))
227 21005 9769 - 9799 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationDate"): scalikejdbc.interpolation.SQLSyntax))
227 20092 9749 - 9800 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationDate"): scalikejdbc.interpolation.SQLSyntax)))
228 21180 9832 - 9885 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationSource"): scalikejdbc.interpolation.SQLSyntax)))
228 19595 9852 - 9884 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationSource"): scalikejdbc.interpolation.SQLSyntax))
229 21798 9917 - 9970 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationOrigin"): scalikejdbc.interpolation.SQLSyntax)))
229 20149 9937 - 9969 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationOrigin"): scalikejdbc.interpolation.SQLSyntax))
230 20375 10005 - 10061 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationOperation"): scalikejdbc.interpolation.SQLSyntax)))
230 20895 10025 - 10060 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationOperation"): scalikejdbc.interpolation.SQLSyntax))
231 21959 10115 - 10149 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationLocation"): scalikejdbc.interpolation.SQLSyntax))
231 21009 10095 - 10150 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountCreationLocation"): scalikejdbc.interpolation.SQLSyntax)))
232 19506 10176 - 10223 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("favoriteCountry"): scalikejdbc.interpolation.SQLSyntax)))
232 20059 10196 - 10222 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("favoriteCountry"): scalikejdbc.interpolation.SQLSyntax))
233 20135 10250 - 10298 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("favoriteLanguage"): scalikejdbc.interpolation.SQLSyntax)))
233 21186 10270 - 10297 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("favoriteLanguage"): scalikejdbc.interpolation.SQLSyntax))
234 20870 10329 - 10378 Apply scalikejdbc.WrappedResultSet.intOpt resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("totalNumberProposals"): scalikejdbc.interpolation.SQLSyntax)))
234 21801 10346 - 10377 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("totalNumberProposals"): scalikejdbc.interpolation.SQLSyntax))
235 20326 10422 - 10449 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("totalNumberVotes"): scalikejdbc.interpolation.SQLSyntax))
235 21961 10405 - 10450 Apply scalikejdbc.WrappedResultSet.intOpt resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("totalNumberVotes"): scalikejdbc.interpolation.SQLSyntax)))
236 20064 10482 - 10535 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("firstContributionDate"): scalikejdbc.interpolation.SQLSyntax)))
236 20928 10502 - 10534 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("firstContributionDate"): scalikejdbc.interpolation.SQLSyntax))
237 21147 10566 - 10618 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("lastContributionDate"): scalikejdbc.interpolation.SQLSyntax)))
237 19514 10586 - 10617 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("lastContributionDate"): scalikejdbc.interpolation.SQLSyntax))
238 21708 10646 - 10695 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("operationActivity"): scalikejdbc.interpolation.SQLSyntax)))
238 20142 10666 - 10694 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("operationActivity"): scalikejdbc.interpolation.SQLSyntax))
239 20335 10720 - 10766 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("sourceActivity"): scalikejdbc.interpolation.SQLSyntax)))
239 20779 10740 - 10765 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("sourceActivity"): scalikejdbc.interpolation.SQLSyntax))
240 20932 10791 - 10834 Apply scalikejdbc.WrappedResultSet.intOpt resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysOfActivity"): scalikejdbc.interpolation.SQLSyntax)))
240 21999 10808 - 10833 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysOfActivity"): scalikejdbc.interpolation.SQLSyntax))
241 19947 10879 - 10907 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysOfActivity30d"): scalikejdbc.interpolation.SQLSyntax))
241 21599 10862 - 10908 Apply scalikejdbc.WrappedResultSet.intOpt resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysOfActivity30d"): scalikejdbc.interpolation.SQLSyntax)))
242 21155 10947 - 10966 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("userType"): scalikejdbc.interpolation.SQLSyntax))
242 20256 10927 - 10967 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("userType"): scalikejdbc.interpolation.SQLSyntax)))
243 21710 11009 - 11031 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountType"): scalikejdbc.interpolation.SQLSyntax))
243 20893 10989 - 11032 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("accountType"): scalikejdbc.interpolation.SQLSyntax)))
244 20288 11078 - 11107 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysBeforeDeletion"): scalikejdbc.interpolation.SQLSyntax))
244 21848 11061 - 11108 Apply scalikejdbc.WrappedResultSet.intOpt resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("daysBeforeDeletion"): scalikejdbc.interpolation.SQLSyntax)))
245 20057 11135 - 11183 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("lastActivityDate"): scalikejdbc.interpolation.SQLSyntax)))
245 21055 11155 - 11182 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("lastActivityDate"): scalikejdbc.interpolation.SQLSyntax))
246 21104 11207 - 11249 Apply scalikejdbc.WrappedResultSet.intOpt resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("sessionsCount"): scalikejdbc.interpolation.SQLSyntax)))
246 21685 11224 - 11248 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("sessionsCount"): scalikejdbc.interpolation.SQLSyntax))
247 20102 11288 - 11310 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("eventsCount"): scalikejdbc.interpolation.SQLSyntax))
247 21713 11271 - 11311 Apply scalikejdbc.WrappedResultSet.intOpt resultSet.intOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((resultName.field("eventsCount"): scalikejdbc.interpolation.SQLSyntax)))