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.operation
21 
22 import java.time.{LocalDate, ZonedDateTime}
23 
24 import cats.data.NonEmptyList
25 import grizzled.slf4j.Logging
26 import org.make.api.extensions.MakeDBExecutionContextComponent
27 import org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion
28 import org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails
29 import org.make.api.operation.DefaultPersistentOperationServiceComponent.{
30   PersistentOperation,
31   PersistentOperationAction
32 }
33 import org.make.api.question.DefaultPersistentQuestionServiceComponent.PersistentQuestion
34 import org.make.api.tag.DefaultPersistentTagServiceComponent
35 import org.make.api.technical.DatabaseTransactions._
36 import org.make.api.technical.PersistentServiceUtils.sortOrderQuery
37 import org.make.api.technical.{PersistentCompanion, ShortenedNames}
38 import org.make.api.technical.ScalikeSupport._
39 import org.make.core.{DateHelper, Order}
40 import org.make.core.technical.Pagination
41 import org.make.core.operation._
42 import org.make.core.reference.Country
43 import org.make.core.user.UserId
44 import scalikejdbc._
45 import spray.json.DefaultJsonProtocol._
46 import spray.json._
47 
48 import scala.concurrent.Future
49 
50 trait DefaultPersistentOperationServiceComponent extends PersistentOperationServiceComponent {
51   this: MakeDBExecutionContextComponent with DefaultPersistentTagServiceComponent =>
52 
53   override lazy val persistentOperationService: PersistentOperationService = new DefaultPersistentOperationService
54 
55   class DefaultPersistentOperationService extends PersistentOperationService with ShortenedNames with Logging {
56 
57     private val operationAlias = PersistentOperation.alias
58     private val operationOfQuestionAlias = PersistentOperationOfQuestion.alias
59     private val operationActionAlias = PersistentOperationAction.operationActionAlias
60     private val questionAlias = PersistentQuestion.alias
61 
62     private val column = PersistentOperation.column
63     private val operationActionColumn = PersistentOperationAction.column
64     private def selectOperation[T]: scalikejdbc.SelectSQLBuilder[T] =
65       select
66         .from(PersistentOperation.as(operationAlias))
67         .leftJoin(PersistentOperationOfQuestion.as(operationOfQuestionAlias))
68         .on(operationAlias.uuid, operationOfQuestionAlias.operationId)
69         .leftJoin(PersistentOperationAction.as(operationActionAlias))
70         .on(operationAlias.uuid, operationActionAlias.operationUuid)
71         .leftJoin(PersistentQuestion.as(questionAlias))
72         .on(questionAlias.questionId, operationOfQuestionAlias.questionId)
73     private def operationWhereOpts(
74       operationIds: Option[Seq[OperationId]],
75       slug: Option[String],
76       operationKinds: Option[Seq[OperationKind]],
77       country: Option[Country],
78       openAt: Option[LocalDate]
79     ): Option[SQLSyntax] =
80       sqls.toAndConditionOpt(
81         operationIds.map(operationIds => sqls.in(operationAlias.uuid, operationIds.map(_.value))),
82         slug.map(slug                 => sqls.like(operationAlias.slug, s"%$slug%")),
83         operationKinds.map(opKinds    => sqls.in(operationAlias.operationKind, opKinds)),
84         country.map(country           => sqls.like(questionAlias.countries, s"%${country.value}%")),
85         openAt.map(
86           openAt =>
87             sqls
88               .le(operationOfQuestionAlias.startDate, openAt)
89               .or(sqls.isNull(operationOfQuestionAlias.startDate))
90         ),
91         openAt.map(
92           openAt =>
93             sqls
94               .ge(operationOfQuestionAlias.endDate, openAt)
95               .or(sqls.isNull(operationOfQuestionAlias.endDate))
96         )
97       )
98 
99     override def find(
100       operationIds: Option[Seq[OperationId]] = None,
101       slug: Option[String] = None,
102       country: Option[Country] = None,
103       openAt: Option[LocalDate] = None
104     ): Future[Seq[Operation]] = {
105       implicit val context: EC = readExecutionContext
106       val futurePersistentOperations: Future[List[PersistentOperation]] = Future(NamedDB("READ").retryableTx {
107         implicit session =>
108           withSQL[PersistentOperation] {
109             selectOperation.where(operationWhereOpts(operationIds, slug, None, country, openAt))
110           }.one(PersistentOperation.apply())
111             .toManies(
112               PersistentOperationAction.opt(operationActionAlias),
113               PersistentOperationOfQuestion.withQuestion(questionAlias.resultName, operationOfQuestionAlias.resultName)
114             )
115             .map { (operation, actions, questions) =>
116               operation.copy(operationActions = actions.toVector, questions = questions.toVector)
117             }
118             .list()
119       })
120 
121       futurePersistentOperations.map(_.map(_.toOperation))
122     }
123 
124     override def findSimple(
125       offset: Pagination.Offset,
126       end: Option[Pagination.End],
127       sort: Option[String],
128       order: Option[Order],
129       slug: Option[String] = None,
130       operationKinds: Option[Seq[OperationKind]]
131     ): Future[Seq[SimpleOperation]] = {
132       implicit val context: EC = readExecutionContext
133       val futurePersistentOperations: Future[List[PersistentOperation]] = Future(NamedDB("READ").retryableTx {
134         implicit session =>
135           withSQL {
136             val query: scalikejdbc.PagingSQLBuilder[PersistentOperation] =
137               select
138                 .from(PersistentOperation.as(operationAlias))
139                 .where(operationWhereOpts(None, slug, operationKinds, None, None))
140             sortOrderQuery(offset, end, sort, order, query)
141           }.map(PersistentOperation.apply()).list()
142       })
143 
144       futurePersistentOperations.map(_.map(_.toSimpleOperation))
145     }
146 
147     override def persist(operation: SimpleOperation): Future[SimpleOperation] = {
148       implicit val context: EC = writeExecutionContext
149       val nowDate: ZonedDateTime = DateHelper.now()
150       Future(NamedDB("WRITE").retryableTx { implicit session =>
151         withSQL {
152           insert
153             .into(PersistentOperation)
154             .namedValues(
155               column.uuid -> operation.operationId.value,
156               column.slug -> operation.slug,
157               column.operationKind -> operation.operationKind,
158               column.operationAuthentication -> operation.operationAuthentication,
159               column.createdAt -> nowDate,
160               column.updatedAt -> nowDate
161             )
162         }.execute()
163       }).map(_ => operation)
164     }
165 
166     override def getById(operationId: OperationId): Future[Option[Operation]] = {
167       implicit val context: EC = readExecutionContext
168       val futureMaybePersistentOperation: Future[Option[PersistentOperation]] = Future(NamedDB("READ").retryableTx {
169         implicit session =>
170           withSQL[PersistentOperation] {
171             selectOperation
172               .where(sqls.eq(operationAlias.uuid, operationId.value))
173           }.one(PersistentOperation.apply())
174             .toManies(
175               PersistentOperationAction.opt(operationActionAlias),
176               PersistentOperationOfQuestion.withQuestion(questionAlias.resultName, operationOfQuestionAlias.resultName)
177             )
178             .map { (operation, actions, questions) =>
179               operation.copy(operationActions = actions.toVector, questions = questions.toVector)
180             }
181             .single()
182       })
183 
184       futureMaybePersistentOperation.map(_.map(_.toOperation))
185     }
186 
187     override def getSimpleById(operationId: OperationId): Future[Option[SimpleOperation]] = {
188       implicit val context: EC = readExecutionContext
189       val futureMaybePersistentOperation: Future[Option[PersistentOperation]] = Future(NamedDB("READ").retryableTx {
190         implicit session =>
191           withSQL[PersistentOperation] {
192             select
193               .from(PersistentOperation.as(operationAlias))
194               .where(sqls.eq(operationAlias.uuid, operationId.value))
195           }.map(PersistentOperation.apply()).single()
196       })
197 
198       futureMaybePersistentOperation.map(_.map(_.toSimpleOperation))
199     }
200 
201     override def getBySlug(slug: String): Future[Option[Operation]] = {
202       implicit val context: EC = readExecutionContext
203       val futureMaybePersistentOperation: Future[Option[PersistentOperation]] = Future(NamedDB("READ").retryableTx {
204         implicit session =>
205           withSQL[PersistentOperation] {
206             selectOperation
207               .where(sqls.eq(operationAlias.slug, slug))
208           }.one(PersistentOperation.apply())
209             .toManies(
210               PersistentOperationAction.opt(operationActionAlias),
211               PersistentOperationOfQuestion.withQuestion(questionAlias.resultName, operationOfQuestionAlias.resultName)
212             )
213             .map { (operation, actions, questions) =>
214               operation.copy(operationActions = actions.toVector, questions = questions.toVector)
215             }
216             .single()
217       })
218 
219       futureMaybePersistentOperation.map(_.map(_.toOperation))
220     }
221 
222     override def modify(operation: SimpleOperation): Future[SimpleOperation] = {
223       implicit val ctx: EC = writeExecutionContext
224       val nowDate: ZonedDateTime = DateHelper.now()
225       Future(NamedDB("WRITE").retryableTx { implicit session =>
226         withSQL {
227           update(PersistentOperation)
228             .set(
229               column.slug -> operation.slug,
230               column.operationKind -> operation.operationKind,
231               column.operationAuthentication -> operation.operationAuthentication,
232               column.updatedAt -> nowDate
233             )
234             .where(
235               sqls
236                 .eq(column.uuid, operation.operationId.value)
237             )
238         }.executeUpdate()
239       }).map(_ => operation)
240     }
241 
242     override def addActionToOperation(action: OperationAction, operationId: OperationId): Future[Boolean] = {
243       implicit val context: EC = writeExecutionContext
244       Future(NamedDB("WRITE").retryableTx { implicit session =>
245         withSQL {
246           insert
247             .into(PersistentOperationAction)
248             .namedValues(
249               operationActionColumn.operationUuid -> operationId.value,
250               operationActionColumn.makeUserUuid -> action.makeUserId.value,
251               operationActionColumn.actionDate -> action.date,
252               operationActionColumn.actionType -> action.actionType,
253               operationActionColumn.arguments -> action.arguments.toJson.compactPrint
254             )
255         }.execute()
256       })
257     }
258 
259     override def count(slug: Option[String] = None, operationKinds: Option[Seq[OperationKind]]): Future[Int] = {
260       implicit val context: EC = readExecutionContext
261       Future(NamedDB("READ").retryableTx { implicit session =>
262         withSQL[PersistentOperation] {
263           select(sqls.count)
264             .from(PersistentOperation.as(operationAlias))
265             .where(operationWhereOpts(None, slug, operationKinds, None, None))
266         }.map(_.int(1)).single().getOrElse(0)
267       })
268     }
269 
270   }
271 }
272 
273 object DefaultPersistentOperationServiceComponent {
274 
275   final case class PersistentOperationAction(
276     operationUuid: String,
277     makeUserUuid: String,
278     actionDate: ZonedDateTime,
279     actionType: String,
280     arguments: Option[String]
281   )
282 
283   final case class PersistentOperation(
284     uuid: String,
285     questions: Seq[FlatQuestionWithDetails],
286     operationActions: Seq[PersistentOperationAction],
287     slug: String,
288     operationKind: String,
289     operationAuthentication: Option[OperationAuthentication],
290     createdAt: ZonedDateTime,
291     updatedAt: ZonedDateTime
292   ) {
293 
294     def toOperation: Operation =
295       Operation(
296         operationId = OperationId(uuid),
297         createdAt = Some(createdAt),
298         updatedAt = Some(updatedAt),
299         slug = slug,
300         operationKind = OperationKind.withValue(operationKind),
301         operationAuthentication = operationAuthentication,
302         events = operationActions
303           .map(
304             action =>
305               OperationAction(
306                 date = action.actionDate,
307                 makeUserId = UserId(action.makeUserUuid),
308                 actionType = action.actionType,
309                 arguments = action.arguments.getOrElse("{}").parseJson.convertTo[Map[String, String]]
310               )
311           )
312           .toList,
313         questions = questions.map(_.toQuestionAndDetails)
314       )
315 
316     def toSimpleOperation: SimpleOperation =
317       SimpleOperation(
318         operationId = OperationId(uuid),
319         slug = slug,
320         createdAt = Some(createdAt),
321         updatedAt = Some(updatedAt),
322         operationKind = OperationKind.withValue(operationKind),
323         operationAuthentication = operationAuthentication
324       )
325   }
326 
327   object PersistentOperationAction
328       extends SQLSyntaxSupport[PersistentOperationAction]
329       with ShortenedNames
330       with Logging {
331 
332     override val columnNames: Seq[String] =
333       Seq("operation_uuid", "make_user_uuid", "action_date", "action_type", "arguments")
334 
335     override val tableName: String = "operation_action"
336 
337     lazy val operationActionAlias: SyntaxProvider[PersistentOperationAction] = syntax("oa")
338 
339     def opt(
340       operationAction: SyntaxProvider[PersistentOperationAction]
341     )(resultSet: WrappedResultSet): Option[PersistentOperationAction] =
342       resultSet
343         .stringOpt(operationAction.resultName.operationUuid)
344         .map(_ => PersistentOperationAction(operationAction.resultName)(resultSet))
345 
346     def apply(
347       operationActionResultName: ResultName[PersistentOperationAction] = operationActionAlias.resultName
348     )(resultSet: WrappedResultSet): PersistentOperationAction = {
349       PersistentOperationAction.apply(
350         operationUuid = resultSet.string(operationActionResultName.operationUuid),
351         makeUserUuid = resultSet.string(operationActionResultName.makeUserUuid),
352         actionDate = resultSet.zonedDateTime(operationActionResultName.actionDate),
353         actionType = resultSet.string(operationActionResultName.actionType),
354         arguments = resultSet.stringOpt(operationActionResultName.arguments)
355       )
356     }
357   }
358 
359   implicit object PersistentOperation
360       extends PersistentCompanion[PersistentOperation, Operation]
361       with ShortenedNames
362       with Logging {
363 
364     override val columnNames: Seq[String] =
365       Seq("uuid", "slug", "operation_kind", "operation_authentication", "created_at", "updated_at")
366     final val swaggerAllowableValues = "uuid,slug,operation_kind,operation_authentication,created_at,updated_at"
367 
368     override val tableName: String = "operation"
369 
370     override lazy val alias: SyntaxProvider[PersistentOperation] = syntax("op")
371 
372     override lazy val defaultSortColumns: NonEmptyList[SQLSyntax] = NonEmptyList.of(alias.slug)
373 
374     @SuppressWarnings(Array("org.wartremover.warts.AsInstanceOf"))
375     def apply(
376       operationResultName: ResultName[PersistentOperation] = alias.resultName
377     )(resultSet: WrappedResultSet): PersistentOperation = {
378       PersistentOperation.apply(
379         uuid = resultSet.string(operationResultName.uuid),
380         slug = resultSet.string(operationResultName.slug),
381         operationKind = resultSet.string(operationResultName.operationKind),
382         operationAuthentication =
383           resultSet.get[Option[OperationAuthentication]](operationResultName.operationAuthentication),
384         operationActions = Seq.empty,
385         questions = Seq.empty,
386         createdAt = resultSet.zonedDateTime(operationResultName.createdAt),
387         updatedAt = resultSet.zonedDateTime(operationResultName.updatedAt)
388       )
389     }
390   }
391 
392 }
Line Stmt Id Pos Tree Symbol Tests Code
62 19780 2729 - 2755 Select scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.column org.scalatest.testsuite org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.column
63 21530 2796 - 2828 Select scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.column org.scalatest.testsuite org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.column
66 20522 2949 - 2963 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.DefaultPersistentOperationService.operationAlias DefaultPersistentOperationService.this.operationAlias
66 19592 2926 - 2964 Apply scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.as org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.as(DefaultPersistentOperationService.this.operationAlias)
67 20580 2984 - 3042 Apply scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.as org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.as(DefaultPersistentOperationService.this.operationOfQuestionAlias)
67 21153 3017 - 3041 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.DefaultPersistentOperationService.operationOfQuestionAlias DefaultPersistentOperationService.this.operationOfQuestionAlias
69 19779 3162 - 3182 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.DefaultPersistentOperationService.operationActionAlias DefaultPersistentOperationService.this.operationActionAlias
69 21338 3133 - 3183 Apply scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.as org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.as(DefaultPersistentOperationService.this.operationActionAlias)
71 20401 3294 - 3307 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.DefaultPersistentOperationService.questionAlias DefaultPersistentOperationService.this.questionAlias
71 19916 3272 - 3308 Apply scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.as org.make.api.question.DefaultPersistentQuestionServiceComponent.PersistentQuestion.as(DefaultPersistentOperationService.this.questionAlias)
72 21381 2905 - 3384 Apply scalikejdbc.QueryDSLFeature.SelectSQLBuilder.on scalikejdbc.`package`.select.from[T](org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.as(DefaultPersistentOperationService.this.operationAlias)).leftJoin(org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.as(DefaultPersistentOperationService.this.operationOfQuestionAlias)).on((DefaultPersistentOperationService.this.operationAlias.field("uuid"): scalikejdbc.interpolation.SQLSyntax), (DefaultPersistentOperationService.this.operationOfQuestionAlias.field("operationId"): scalikejdbc.interpolation.SQLSyntax)).leftJoin(org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.as(DefaultPersistentOperationService.this.operationActionAlias)).on((DefaultPersistentOperationService.this.operationAlias.field("uuid"): scalikejdbc.interpolation.SQLSyntax), (DefaultPersistentOperationService.this.operationActionAlias.field("operationUuid"): scalikejdbc.interpolation.SQLSyntax)).leftJoin(org.make.api.question.DefaultPersistentQuestionServiceComponent.PersistentQuestion.as(DefaultPersistentOperationService.this.questionAlias)).on((DefaultPersistentOperationService.this.questionAlias.field("questionId"): scalikejdbc.interpolation.SQLSyntax), (DefaultPersistentOperationService.this.operationOfQuestionAlias.field("questionId"): scalikejdbc.interpolation.SQLSyntax))
80 21150 3642 - 4438 Apply scalikejdbc.interpolation.SQLSyntax.toAndConditionOpt scalikejdbc.`package`.sqls.toAndConditionOpt(operationIds.map[scalikejdbc.interpolation.SQLSyntax](((operationIds: Seq[org.make.core.operation.OperationId]) => scalikejdbc.`package`.sqls.in[String]((DefaultPersistentOperationService.this.operationAlias.field("uuid"): scalikejdbc.interpolation.SQLSyntax), operationIds.map[String](((x$1: org.make.core.operation.OperationId) => x$1.value)))(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))), slug.map[scalikejdbc.interpolation.SQLSyntax](((slug: String) => scalikejdbc.`package`.sqls.like((DefaultPersistentOperationService.this.operationAlias.field("slug"): scalikejdbc.interpolation.SQLSyntax), ("%".+(slug).+("%"): String)))), operationKinds.map[scalikejdbc.interpolation.SQLSyntax](((opKinds: Seq[org.make.core.operation.OperationKind]) => scalikejdbc.`package`.sqls.in[org.make.core.operation.OperationKind]((DefaultPersistentOperationService.this.operationAlias.field("operationKind"): scalikejdbc.interpolation.SQLSyntax), opKinds)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.operation.OperationKind]((OperationKind: enumeratum.values.StringEnum[org.make.core.operation.OperationKind]))))), country.map[scalikejdbc.interpolation.SQLSyntax](((country: org.make.core.reference.Country) => scalikejdbc.`package`.sqls.like((DefaultPersistentOperationService.this.questionAlias.field("countries"): scalikejdbc.interpolation.SQLSyntax), ("%".+(country.value).+("%"): String)))), openAt.map[scalikejdbc.interpolation.SQLSyntax](((openAt: java.time.LocalDate) => scalikejdbc.`package`.sqls.le[java.time.LocalDate]((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("startDate"): scalikejdbc.interpolation.SQLSyntax), openAt)(scalikejdbc.this.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory).or(scalikejdbc.`package`.sqls.isNull((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("startDate"): scalikejdbc.interpolation.SQLSyntax))))), openAt.map[scalikejdbc.interpolation.SQLSyntax](((openAt: java.time.LocalDate) => scalikejdbc.`package`.sqls.ge[java.time.LocalDate]((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("endDate"): scalikejdbc.interpolation.SQLSyntax), openAt)(scalikejdbc.this.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory).or(scalikejdbc.`package`.sqls.isNull((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("endDate"): scalikejdbc.interpolation.SQLSyntax))))))
81 19597 3736 - 3761 Apply scala.collection.IterableOps.map operationIds.map[String](((x$1: org.make.core.operation.OperationId) => x$1.value))
81 20482 3753 - 3760 Select org.make.core.operation.OperationId.value x$1.value
81 20706 3707 - 3762 ApplyToImplicitArgs scalikejdbc.interpolation.SQLSyntax.in scalikejdbc.`package`.sqls.in[String]((DefaultPersistentOperationService.this.operationAlias.field("uuid"): scalikejdbc.interpolation.SQLSyntax), operationIds.map[String](((x$1: org.make.core.operation.OperationId) => x$1.value)))(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)
81 19689 3674 - 3763 Apply scala.Option.map operationIds.map[scalikejdbc.interpolation.SQLSyntax](((operationIds: Seq[org.make.core.operation.OperationId]) => scalikejdbc.`package`.sqls.in[String]((DefaultPersistentOperationService.this.operationAlias.field("uuid"): scalikejdbc.interpolation.SQLSyntax), operationIds.map[String](((x$1: org.make.core.operation.OperationId) => x$1.value)))(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)))
81 21184 3714 - 3714 Select scalikejdbc.ParameterBinderFactory.stringParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory
82 20403 3773 - 3849 Apply scala.Option.map slug.map[scalikejdbc.interpolation.SQLSyntax](((slug: String) => scalikejdbc.`package`.sqls.like((DefaultPersistentOperationService.this.operationAlias.field("slug"): scalikejdbc.interpolation.SQLSyntax), ("%".+(slug).+("%"): String))))
82 21294 3806 - 3848 Apply scalikejdbc.interpolation.SQLSyntax.like scalikejdbc.`package`.sqls.like((DefaultPersistentOperationService.this.operationAlias.field("slug"): scalikejdbc.interpolation.SQLSyntax), ("%".+(slug).+("%"): String))
83 19860 3899 - 3899 ApplyToImplicitArgs org.make.api.technical.ScalikeSupport.stringEnumBinders org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.operation.OperationKind]((OperationKind: enumeratum.values.StringEnum[org.make.core.operation.OperationKind]))
83 21492 3892 - 3938 ApplyToImplicitArgs scalikejdbc.interpolation.SQLSyntax.in scalikejdbc.`package`.sqls.in[org.make.core.operation.OperationKind]((DefaultPersistentOperationService.this.operationAlias.field("operationKind"): scalikejdbc.interpolation.SQLSyntax), opKinds)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.operation.OperationKind]((OperationKind: enumeratum.values.StringEnum[org.make.core.operation.OperationKind])))
83 20487 3859 - 3939 Apply scala.Option.map operationKinds.map[scalikejdbc.interpolation.SQLSyntax](((opKinds: Seq[org.make.core.operation.OperationKind]) => scalikejdbc.`package`.sqls.in[org.make.core.operation.OperationKind]((DefaultPersistentOperationService.this.operationAlias.field("operationKind"): scalikejdbc.interpolation.SQLSyntax), opKinds)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.operation.OperationKind]((OperationKind: enumeratum.values.StringEnum[org.make.core.operation.OperationKind])))))
84 21143 3949 - 4040 Apply scala.Option.map country.map[scalikejdbc.interpolation.SQLSyntax](((country: org.make.core.reference.Country) => scalikejdbc.`package`.sqls.like((DefaultPersistentOperationService.this.questionAlias.field("countries"): scalikejdbc.interpolation.SQLSyntax), ("%".+(country.value).+("%"): String))))
84 19559 3982 - 4039 Apply scalikejdbc.interpolation.SQLSyntax.like scalikejdbc.`package`.sqls.like((DefaultPersistentOperationService.this.questionAlias.field("countries"): scalikejdbc.interpolation.SQLSyntax), ("%".+(country.value).+("%"): String))
85 20328 4050 - 4237 Apply scala.Option.map openAt.map[scalikejdbc.interpolation.SQLSyntax](((openAt: java.time.LocalDate) => scalikejdbc.`package`.sqls.le[java.time.LocalDate]((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("startDate"): scalikejdbc.interpolation.SQLSyntax), openAt)(scalikejdbc.this.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory).or(scalikejdbc.`package`.sqls.isNull((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("startDate"): scalikejdbc.interpolation.SQLSyntax)))))
88 20659 4116 - 4116 Select scalikejdbc.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory
89 21298 4094 - 4227 Apply scalikejdbc.interpolation.SQLSyntax.or scalikejdbc.`package`.sqls.le[java.time.LocalDate]((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("startDate"): scalikejdbc.interpolation.SQLSyntax), openAt)(scalikejdbc.this.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory).or(scalikejdbc.`package`.sqls.isNull((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("startDate"): scalikejdbc.interpolation.SQLSyntax)))
89 19676 4179 - 4226 Apply scalikejdbc.interpolation.SQLSyntax.isNull scalikejdbc.`package`.sqls.isNull((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("startDate"): scalikejdbc.interpolation.SQLSyntax))
91 19566 4247 - 4430 Apply scala.Option.map openAt.map[scalikejdbc.interpolation.SQLSyntax](((openAt: java.time.LocalDate) => scalikejdbc.`package`.sqls.ge[java.time.LocalDate]((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("endDate"): scalikejdbc.interpolation.SQLSyntax), openAt)(scalikejdbc.this.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory).or(scalikejdbc.`package`.sqls.isNull((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("endDate"): scalikejdbc.interpolation.SQLSyntax)))))
94 21933 4313 - 4313 Select scalikejdbc.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory scalikejdbc.this.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory
95 21528 4374 - 4419 Apply scalikejdbc.interpolation.SQLSyntax.isNull scalikejdbc.`package`.sqls.isNull((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("endDate"): scalikejdbc.interpolation.SQLSyntax))
95 20460 4291 - 4420 Apply scalikejdbc.interpolation.SQLSyntax.or scalikejdbc.`package`.sqls.ge[java.time.LocalDate]((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("endDate"): scalikejdbc.interpolation.SQLSyntax), openAt)(scalikejdbc.this.ParameterBinderFactory.javaTimeLocalDateParameterBinderFactory).or(scalikejdbc.`package`.sqls.isNull((DefaultPersistentOperationService.this.operationOfQuestionAlias.field("endDate"): scalikejdbc.interpolation.SQLSyntax)))
105 20627 4696 - 4716 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentOperationServiceComponent.this.readExecutionContext
106 19777 4791 - 5457 ApplyToImplicitArgs scala.concurrent.Future.apply scala.concurrent.Future.apply[List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]]({ <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$15: scalikejdbc.DBSession => List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.OneToManies2SQLToList[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction,org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails,scalikejdbc.HasExtractor,org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation](DefaultPersistentOperationService.this.selectOperation[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation].where(DefaultPersistentOperationService.this.operationWhereOpts(operationIds, slug, scala.None, country, openAt))).one[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] = org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply(eta$0$1)(resultSet)) }).toManies[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction, org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails](((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.opt(DefaultPersistentOperationService.this.operationActionAlias)(resultSet)), ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.withQuestion(DefaultPersistentOperationService.this.questionAlias.resultName, DefaultPersistentOperationService.this.operationOfQuestionAlias.resultName)(resultSet))).map(((operation: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation, actions: scala.collection.Seq[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction], questions: scala.collection.Seq[org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails]) => { <artifact> val x$4: scala.collection.immutable.Vector[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction] @scala.reflect.internal.annotations.uncheckedBounds = actions.toVector; <artifact> val x$5: scala.collection.immutable.Vector[org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails] @scala.reflect.internal.annotations.uncheckedBounds = questions.toVector; <artifact> val x$6: String = operation.copy$default$1; <artifact> val x$7: String = operation.copy$default$4; <artifact> val x$8: String = operation.copy$default$5; <artifact> val x$9: Option[org.make.core.operation.OperationAuthentication] @scala.reflect.internal.annotations.uncheckedBounds = operation.copy$default$6; <artifact> val x$10: java.time.ZonedDateTime = operation.copy$default$7; <artifact> val x$11: java.time.ZonedDateTime = operation.copy$default$8; operation.copy(x$6, x$5, x$4, x$7, x$8, x$9, x$10, x$11) })).list; { <artifact> val x$12: scalikejdbc.DBSession = session; <artifact> val x$13: scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor]]; <artifact> val x$14: scalikejdbc.ConnectionPoolContext = stabilizer$1.apply$default$2(); stabilizer$1.apply()(x$12, x$14, x$13) } }); <artifact> val x$16: scalikejdbc.TxBoundary[List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$15); qual$1.retryableTx[List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$15)(x$16) })(context)
121 21305 5465 - 5517 ApplyToImplicitArgs scala.concurrent.Future.map futurePersistentOperations.map[List[org.make.core.operation.Operation]](((x$2: List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]) => x$2.map[org.make.core.operation.Operation](((x$3: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation) => x$3.toOperation))))(context)
132 20284 5835 - 5855 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentOperationServiceComponent.this.readExecutionContext
133 21941 5930 - 6376 ApplyToImplicitArgs scala.concurrent.Future.apply scala.concurrent.Future.apply[List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]]({ <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.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToList[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]({ val query: scalikejdbc.PagingSQLBuilder[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] = scalikejdbc.`package`.select.from[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation](org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.as(DefaultPersistentOperationService.this.operationAlias)).where(DefaultPersistentOperationService.this.operationWhereOpts(scala.None, slug, operationKinds, scala.None, scala.None)); org.make.api.technical.PersistentServiceUtils.sortOrderQuery[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation, org.make.core.operation.Operation](offset, end, sort, order, query)(org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation) }).map[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] = org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply(eta$0$1)(resultSet)) }).list; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,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.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$7); qual$1.retryableTx[List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$7)(x$8) })(context)
144 21483 6384 - 6442 ApplyToImplicitArgs scala.concurrent.Future.map futurePersistentOperations.map[List[org.make.core.operation.SimpleOperation]](((x$4: List[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]) => x$4.map[org.make.core.operation.SimpleOperation](((x$5: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation) => x$5.toSimpleOperation))))(context)
148 20576 6565 - 6586 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext org.scalatest.testsuite DefaultPersistentOperationServiceComponent.this.writeExecutionContext
149 19477 6622 - 6638 Apply org.make.core.DefaultDateHelper.now org.scalatest.testsuite org.make.core.DateHelper.now()
163 21099 6645 - 7199 ApplyToImplicitArgs scala.concurrent.Future.map org.scalatest.testsuite 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.operation.DefaultPersistentOperationServiceComponent.PersistentOperation).namedValues((DefaultPersistentOperationService.this.column.field("uuid"): scalikejdbc.interpolation.SQLSyntax).->[String](operation.operationId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentOperationService.this.column.field("slug"): scalikejdbc.interpolation.SQLSyntax).->[String](operation.slug)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentOperationService.this.column.field("operationKind"): scalikejdbc.interpolation.SQLSyntax).->[org.make.core.operation.OperationKind](operation.operationKind)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.operation.OperationKind]((OperationKind: enumeratum.values.StringEnum[org.make.core.operation.OperationKind]))), (DefaultPersistentOperationService.this.column.field("operationAuthentication"): scalikejdbc.interpolation.SQLSyntax).->[Option[org.make.core.operation.OperationAuthentication]](operation.operationAuthentication)(operation.this.OperationAuthentication.operationAuthenticationBinder), (DefaultPersistentOperationService.this.column.field("createdAt"): scalikejdbc.interpolation.SQLSyntax).->[java.time.ZonedDateTime](nowDate)(scalikejdbc.this.ParameterBinderFactory.javaTimeZonedDateTimeParameterBinderFactory), (DefaultPersistentOperationService.this.column.field("updatedAt"): scalikejdbc.interpolation.SQLSyntax).->[java.time.ZonedDateTime](nowDate)(scalikejdbc.this.ParameterBinderFactory.javaTimeZonedDateTimeParameterBinderFactory))).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.operation.SimpleOperation](((x$6: Boolean) => operation))(context)
167 20185 7322 - 7342 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentOperationServiceComponent.this.readExecutionContext
168 19729 7423 - 8092 ApplyToImplicitArgs scala.concurrent.Future.apply scala.concurrent.Future.apply[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]]({ <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$15: scalikejdbc.DBSession => Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.OneToManies2SQLToOption[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction,org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails,scalikejdbc.HasExtractor,org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation](DefaultPersistentOperationService.this.selectOperation[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation].where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentOperationService.this.operationAlias.field("uuid"): scalikejdbc.interpolation.SQLSyntax), operationId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).one[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] = org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply(eta$0$1)(resultSet)) }).toManies[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction, org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails](((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.opt(DefaultPersistentOperationService.this.operationActionAlias)(resultSet)), ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.withQuestion(DefaultPersistentOperationService.this.questionAlias.resultName, DefaultPersistentOperationService.this.operationOfQuestionAlias.resultName)(resultSet))).map(((operation: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation, actions: scala.collection.Seq[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction], questions: scala.collection.Seq[org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails]) => { <artifact> val x$4: scala.collection.immutable.Vector[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction] @scala.reflect.internal.annotations.uncheckedBounds = actions.toVector; <artifact> val x$5: scala.collection.immutable.Vector[org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails] @scala.reflect.internal.annotations.uncheckedBounds = questions.toVector; <artifact> val x$6: String = operation.copy$default$1; <artifact> val x$7: String = operation.copy$default$4; <artifact> val x$8: String = operation.copy$default$5; <artifact> val x$9: Option[org.make.core.operation.OperationAuthentication] @scala.reflect.internal.annotations.uncheckedBounds = operation.copy$default$6; <artifact> val x$10: java.time.ZonedDateTime = operation.copy$default$7; <artifact> val x$11: java.time.ZonedDateTime = operation.copy$default$8; operation.copy(x$6, x$5, x$4, x$7, x$8, x$9, x$10, x$11) })).single; { <artifact> val x$12: scalikejdbc.DBSession = session; <artifact> val x$13: scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor]]; <artifact> val x$14: scalikejdbc.ConnectionPoolContext = stabilizer$1.apply$default$2(); stabilizer$1.apply()(x$12, x$14, x$13) } }); <artifact> val x$16: scalikejdbc.TxBoundary[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$15); qual$1.retryableTx[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$15)(x$16) })(context)
184 21377 8100 - 8156 ApplyToImplicitArgs scala.concurrent.Future.map futureMaybePersistentOperation.map[Option[org.make.core.operation.Operation]](((x$7: Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]) => x$7.map[org.make.core.operation.Operation](((x$8: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation) => x$8.toOperation))))(context)
188 20291 8291 - 8311 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentOperationServiceComponent.this.readExecutionContext
189 21895 8392 - 8709 ApplyToImplicitArgs scala.concurrent.Future.apply scala.concurrent.Future.apply[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]]({ <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.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToOption[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation](scalikejdbc.`package`.select.from[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation](org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.as(DefaultPersistentOperationService.this.operationAlias)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentOperationService.this.operationAlias.field("uuid"): scalikejdbc.interpolation.SQLSyntax), operationId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).map[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] = org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply(eta$0$1)(resultSet)) }).single; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,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.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$7); qual$1.retryableTx[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$7)(x$8) })(context)
198 21488 8717 - 8779 ApplyToImplicitArgs scala.concurrent.Future.map futureMaybePersistentOperation.map[Option[org.make.core.operation.SimpleOperation]](((x$9: Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]) => x$9.map[org.make.core.operation.SimpleOperation](((x$10: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation) => x$10.toSimpleOperation))))(context)
202 20420 8892 - 8912 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentOperationServiceComponent.this.readExecutionContext
203 19556 8993 - 9649 ApplyToImplicitArgs scala.concurrent.Future.apply scala.concurrent.Future.apply[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]]({ <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$15: scalikejdbc.DBSession => Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.OneToManies2SQLToOption[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction,org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails,scalikejdbc.HasExtractor,org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation](DefaultPersistentOperationService.this.selectOperation[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation].where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentOperationService.this.operationAlias.field("slug"): scalikejdbc.interpolation.SQLSyntax), slug)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).one[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation] = org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply(eta$0$1)(resultSet)) }).toManies[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction, org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails](((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.opt(DefaultPersistentOperationService.this.operationActionAlias)(resultSet)), ((resultSet: scalikejdbc.WrappedResultSet) => org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.withQuestion(DefaultPersistentOperationService.this.questionAlias.resultName, DefaultPersistentOperationService.this.operationOfQuestionAlias.resultName)(resultSet))).map(((operation: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation, actions: scala.collection.Seq[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction], questions: scala.collection.Seq[org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails]) => { <artifact> val x$4: scala.collection.immutable.Vector[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction] @scala.reflect.internal.annotations.uncheckedBounds = actions.toVector; <artifact> val x$5: scala.collection.immutable.Vector[org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails] @scala.reflect.internal.annotations.uncheckedBounds = questions.toVector; <artifact> val x$6: String = operation.copy$default$1; <artifact> val x$7: String = operation.copy$default$4; <artifact> val x$8: String = operation.copy$default$5; <artifact> val x$9: Option[org.make.core.operation.OperationAuthentication] @scala.reflect.internal.annotations.uncheckedBounds = operation.copy$default$6; <artifact> val x$10: java.time.ZonedDateTime = operation.copy$default$7; <artifact> val x$11: java.time.ZonedDateTime = operation.copy$default$8; operation.copy(x$6, x$5, x$4, x$7, x$8, x$9, x$10, x$11) })).single; { <artifact> val x$12: scalikejdbc.DBSession = session; <artifact> val x$13: scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation,scalikejdbc.HasExtractor]]; <artifact> val x$14: scalikejdbc.ConnectionPoolContext = stabilizer$1.apply$default$2(); stabilizer$1.apply()(x$12, x$14, x$13) } }); <artifact> val x$16: scalikejdbc.TxBoundary[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$15); qual$1.retryableTx[Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]](x$15)(x$16) })(context)
219 21106 9657 - 9713 ApplyToImplicitArgs scala.concurrent.Future.map futureMaybePersistentOperation.map[Option[org.make.core.operation.Operation]](((x$11: Option[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation]) => x$11.map[org.make.core.operation.Operation](((x$12: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation) => x$12.toOperation))))(context)
223 20218 9831 - 9852 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext DefaultPersistentOperationServiceComponent.this.writeExecutionContext
224 19735 9888 - 9904 Apply org.make.core.DefaultDateHelper.now org.make.core.DateHelper.now()
239 21296 9911 - 10459 ApplyToImplicitArgs scala.concurrent.Future.map 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("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 => Int @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.update.apply(org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation).set((DefaultPersistentOperationService.this.column.field("slug"): scalikejdbc.interpolation.SQLSyntax).->[String](operation.slug)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentOperationService.this.column.field("operationKind"): scalikejdbc.interpolation.SQLSyntax).->[org.make.core.operation.OperationKind](operation.operationKind)(org.make.api.technical.ScalikeSupport.stringEnumBinders[org.make.core.operation.OperationKind]((OperationKind: enumeratum.values.StringEnum[org.make.core.operation.OperationKind]))), (DefaultPersistentOperationService.this.column.field("operationAuthentication"): scalikejdbc.interpolation.SQLSyntax).->[Option[org.make.core.operation.OperationAuthentication]](operation.operationAuthentication)(operation.this.OperationAuthentication.operationAuthenticationBinder), (DefaultPersistentOperationService.this.column.field("updatedAt"): scalikejdbc.interpolation.SQLSyntax).->[java.time.ZonedDateTime](nowDate)(scalikejdbc.this.ParameterBinderFactory.javaTimeZonedDateTimeParameterBinderFactory)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentOperationService.this.column.field("uuid"): scalikejdbc.interpolation.SQLSyntax), operation.operationId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).executeUpdate.apply()(session)); <artifact> val x$5: scalikejdbc.TxBoundary[Int] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Int](x$4); qual$1.retryableTx[Int](x$4)(x$5) })(ctx).map[org.make.core.operation.SimpleOperation](((x$13: Int) => operation))(ctx)
243 20380 10610 - 10631 Select org.make.api.extensions.MakeDBExecutionContextComponent.writeExecutionContext DefaultPersistentOperationServiceComponent.this.writeExecutionContext
244 21904 10638 - 11211 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`.insert.into(org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction).namedValues((DefaultPersistentOperationService.this.operationActionColumn.field("operationUuid"): scalikejdbc.interpolation.SQLSyntax).->[String](operationId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentOperationService.this.operationActionColumn.field("makeUserUuid"): scalikejdbc.interpolation.SQLSyntax).->[String](action.makeUserId.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentOperationService.this.operationActionColumn.field("actionDate"): scalikejdbc.interpolation.SQLSyntax).->[java.time.ZonedDateTime](action.date)(scalikejdbc.this.ParameterBinderFactory.javaTimeZonedDateTimeParameterBinderFactory), (DefaultPersistentOperationService.this.operationActionColumn.field("actionType"): scalikejdbc.interpolation.SQLSyntax).->[String](action.actionType)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentOperationService.this.operationActionColumn.field("arguments"): scalikejdbc.interpolation.SQLSyntax).->[String](spray.json.`package`.enrichAny[Map[String,String]](action.arguments).toJson(spray.json.DefaultJsonProtocol.mapFormat[String, String](spray.json.DefaultJsonProtocol.StringJsonFormat, spray.json.DefaultJsonProtocol.StringJsonFormat)).compactPrint)(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)
260 21462 11365 - 11385 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentOperationServiceComponent.this.readExecutionContext
261 20542 11392 - 11708 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[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation](scalikejdbc.`package`.select.apply[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation](scalikejdbc.`package`.sqls.count).from(org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.as(DefaultPersistentOperationService.this.operationAlias)).where(DefaultPersistentOperationService.this.operationWhereOpts(scala.None, slug, operationKinds, scala.None, scala.None))).map[Int](((x$14: scalikejdbc.WrappedResultSet) => x$14.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)
295 20348 12334 - 13069 Apply org.make.core.operation.Operation.apply org.make.core.operation.Operation.apply(x$1, x$4, x$7, x$8, x$5, x$6, x$2, x$3)
296 19563 12379 - 12383 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.uuid PersistentOperation.this.uuid
296 21189 12367 - 12384 Apply org.make.core.operation.OperationId.apply org.make.core.operation.OperationId.apply(PersistentOperation.this.uuid)
297 20225 12411 - 12420 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.createdAt PersistentOperation.this.createdAt
297 19741 12406 - 12421 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](PersistentOperation.this.createdAt)
298 21261 12448 - 12457 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.updatedAt PersistentOperation.this.updatedAt
298 20381 12443 - 12458 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](PersistentOperation.this.updatedAt)
299 21887 12475 - 12479 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.slug PersistentOperation.this.slug
300 20463 12505 - 12543 Apply enumeratum.values.ValueEnum.withValue org.make.core.operation.OperationKind.withValue(PersistentOperation.this.operationKind)
300 21019 12529 - 12542 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.operationKind PersistentOperation.this.operationKind
301 19520 12579 - 12602 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.operationAuthentication PersistentOperation.this.operationAuthentication
305 21060 12690 - 12972 Apply org.make.core.operation.OperationAction.apply org.make.core.operation.OperationAction.apply(action.actionDate, org.make.core.user.UserId.apply(action.makeUserUuid), action.actionType, spray.json.`package`.enrichString(action.arguments.getOrElse[String]("{}")).parseJson.convertTo[Map[String,String]](spray.json.DefaultJsonProtocol.mapFormat[String, String](spray.json.DefaultJsonProtocol.StringJsonFormat, spray.json.DefaultJsonProtocol.StringJsonFormat)))
306 21191 12730 - 12747 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.actionDate action.actionDate
307 20183 12785 - 12804 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.makeUserUuid action.makeUserUuid
307 19700 12778 - 12805 Apply org.make.core.user.UserId.apply org.make.core.user.UserId.apply(action.makeUserUuid)
308 21266 12836 - 12853 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.actionType action.actionType
309 20341 12883 - 12915 Apply scala.Option.getOrElse action.arguments.getOrElse[String]("{}")
309 20448 12935 - 12935 ApplyToImplicitArgs spray.json.CollectionFormats.mapFormat spray.json.DefaultJsonProtocol.mapFormat[String, String](spray.json.DefaultJsonProtocol.StringJsonFormat, spray.json.DefaultJsonProtocol.StringJsonFormat)
309 19527 12883 - 12956 ApplyToImplicitArgs spray.json.JsValue.convertTo spray.json.`package`.enrichString(action.arguments.getOrElse[String]("{}")).parseJson.convertTo[Map[String,String]](spray.json.DefaultJsonProtocol.mapFormat[String, String](spray.json.DefaultJsonProtocol.StringJsonFormat, spray.json.DefaultJsonProtocol.StringJsonFormat))
309 21892 12935 - 12935 Select spray.json.BasicFormats.StringJsonFormat spray.json.DefaultJsonProtocol.StringJsonFormat
309 20958 12935 - 12935 Select spray.json.BasicFormats.StringJsonFormat spray.json.DefaultJsonProtocol.StringJsonFormat
312 20152 12621 - 13002 Select scala.collection.IterableOnceOps.toList PersistentOperation.this.operationActions.map[org.make.core.operation.OperationAction](((action: org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction) => org.make.core.operation.OperationAction.apply(action.actionDate, org.make.core.user.UserId.apply(action.makeUserUuid), action.actionType, spray.json.`package`.enrichString(action.arguments.getOrElse[String]("{}")).parseJson.convertTo[Map[String,String]](spray.json.DefaultJsonProtocol.mapFormat[String, String](spray.json.DefaultJsonProtocol.StringJsonFormat, spray.json.DefaultJsonProtocol.StringJsonFormat))))).toList
313 21239 13024 - 13061 Apply scala.collection.IterableOps.map PersistentOperation.this.questions.map[org.make.core.operation.QuestionWithDetails](((x$15: org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails) => x$15.toQuestionAndDetails))
313 19733 13038 - 13060 Select org.make.api.operation.DefaultPersistentOperationOfQuestionServiceComponent.PersistentOperationOfQuestion.FlatQuestionWithDetails.toQuestionAndDetails x$15.toQuestionAndDetails
317 21017 13122 - 13404 Apply org.make.core.operation.SimpleOperation.apply org.make.core.operation.SimpleOperation.apply(x$1, x$2, x$5, x$6, x$3, x$4)
318 20939 13161 - 13178 Apply org.make.core.operation.OperationId.apply org.make.core.operation.OperationId.apply(PersistentOperation.this.uuid)
318 21901 13173 - 13177 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.uuid PersistentOperation.this.uuid
319 20538 13195 - 13199 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.slug PersistentOperation.this.slug
320 19486 13226 - 13235 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.createdAt PersistentOperation.this.createdAt
320 21063 13221 - 13236 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](PersistentOperation.this.createdAt)
321 21804 13258 - 13273 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](PersistentOperation.this.updatedAt)
321 20158 13263 - 13272 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.updatedAt PersistentOperation.this.updatedAt
322 21349 13323 - 13336 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.operationKind PersistentOperation.this.operationKind
322 20265 13299 - 13337 Apply enumeratum.values.ValueEnum.withValue org.make.core.operation.OperationKind.withValue(PersistentOperation.this.operationKind)
323 21856 13373 - 13396 Select org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.operationAuthentication PersistentOperation.this.operationAuthentication
333 20493 13601 - 13683 Apply scala.collection.SeqFactory.Delegate.apply org.scalatest.testsuite scala.`package`.Seq.apply[String]("operation_uuid", "make_user_uuid", "action_date", "action_type", "arguments")
335 19604 13722 - 13740 Literal <nosymbol> org.scalatest.testsuite "operation_action"
343 21066 14020 - 14060 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationAction.resultName.field("operationUuid"): scalikejdbc.interpolation.SQLSyntax))
344 20112 14080 - 14144 Apply org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.apply DefaultPersistentOperationServiceComponent.this.PersistentOperationAction.apply(operationAction.resultName)(resultSet)
344 21810 13991 - 14145 Apply scala.Option.map resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationAction.resultName.field("operationUuid"): scalikejdbc.interpolation.SQLSyntax))).map[org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction](((x$16: String) => DefaultPersistentOperationServiceComponent.this.PersistentOperationAction.apply(operationAction.resultName)(resultSet)))
349 20344 14339 - 14781 Apply org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperationAction.apply DefaultPersistentOperationServiceComponent.this.PersistentOperationAction.apply(resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("operationUuid"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("makeUserUuid"): scalikejdbc.interpolation.SQLSyntax))), resultSet.zonedDateTime(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("actionDate"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("actionType"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("arguments"): scalikejdbc.interpolation.SQLSyntax))))
350 20338 14396 - 14453 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("operationUuid"): scalikejdbc.interpolation.SQLSyntax)))
350 21306 14413 - 14452 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("operationUuid"): scalikejdbc.interpolation.SQLSyntax))
351 21860 14495 - 14533 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("makeUserUuid"): scalikejdbc.interpolation.SQLSyntax))
351 20982 14478 - 14534 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("makeUserUuid"): scalikejdbc.interpolation.SQLSyntax)))
352 19524 14557 - 14618 Apply scalikejdbc.WrappedResultSet.zonedDateTime resultSet.zonedDateTime(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("actionDate"): scalikejdbc.interpolation.SQLSyntax)))
352 20073 14581 - 14617 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("actionDate"): scalikejdbc.interpolation.SQLSyntax))
353 21160 14658 - 14694 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("actionType"): scalikejdbc.interpolation.SQLSyntax))
353 20122 14641 - 14695 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("actionType"): scalikejdbc.interpolation.SQLSyntax)))
354 21764 14737 - 14772 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("arguments"): scalikejdbc.interpolation.SQLSyntax))
354 21315 14717 - 14773 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationActionResultName.field("arguments"): scalikejdbc.interpolation.SQLSyntax)))
365 21946 14995 - 15088 Apply scala.collection.SeqFactory.Delegate.apply org.scalatest.testsuite scala.`package`.Seq.apply[String]("uuid", "slug", "operation_kind", "operation_authentication", "created_at", "updated_at")
366 20986 15128 - 15201 Literal <nosymbol> "uuid,slug,operation_kind,operation_authentication,created_at,updated_at"
368 20027 15240 - 15251 Literal <nosymbol> org.scalatest.testsuite "operation"
378 21980 15657 - 16243 Apply org.make.api.operation.DefaultPersistentOperationServiceComponent.PersistentOperation.apply DefaultPersistentOperationServiceComponent.this.PersistentOperation.apply(x$1, x$6, x$5, x$2, x$3, x$4, x$7, x$8)
379 19483 15716 - 15740 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("uuid"): scalikejdbc.interpolation.SQLSyntax))
379 21161 15699 - 15741 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("uuid"): scalikejdbc.interpolation.SQLSyntax)))
380 21773 15758 - 15800 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("slug"): scalikejdbc.interpolation.SQLSyntax)))
380 20104 15775 - 15799 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("slug"): scalikejdbc.interpolation.SQLSyntax))
381 20298 15826 - 15877 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("operationKind"): scalikejdbc.interpolation.SQLSyntax)))
381 21242 15843 - 15876 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("operationKind"): scalikejdbc.interpolation.SQLSyntax))
383 20035 15923 - 16014 ApplyToImplicitArgs scalikejdbc.WrappedResultSet.get resultSet.get[Option[org.make.core.operation.OperationAuthentication]](scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("operationAuthentication"): scalikejdbc.interpolation.SQLSyntax)))(operation.this.OperationAuthentication.operationAuthenticationBinder)
383 20905 15969 - 15969 Select org.make.core.operation.OperationAuthentication.operationAuthenticationBinder operation.this.OperationAuthentication.operationAuthenticationBinder
383 21949 15970 - 16013 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("operationAuthentication"): scalikejdbc.interpolation.SQLSyntax))
384 19488 16043 - 16052 TypeApply scala.collection.SeqFactory.Delegate.empty scala.`package`.Seq.empty[Nothing]
385 21120 16074 - 16083 TypeApply scala.collection.SeqFactory.Delegate.empty scala.`package`.Seq.empty[Nothing]
386 21715 16105 - 16159 Apply scalikejdbc.WrappedResultSet.zonedDateTime resultSet.zonedDateTime(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("createdAt"): scalikejdbc.interpolation.SQLSyntax)))
386 20109 16129 - 16158 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("createdAt"): scalikejdbc.interpolation.SQLSyntax))
387 20308 16181 - 16235 Apply scalikejdbc.WrappedResultSet.zonedDateTime resultSet.zonedDateTime(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("updatedAt"): scalikejdbc.interpolation.SQLSyntax)))
387 20758 16205 - 16234 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((operationResultName.field("updatedAt"): scalikejdbc.interpolation.SQLSyntax))