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.auth
21 
22 import java.time.ZonedDateTime
23 import cats.implicits._
24 import grizzled.slf4j.Logging
25 import org.make.api.extensions.MakeDBExecutionContextComponent
26 import org.make.api.technical.ShortenedNames
27 import org.make.core.auth.{AuthCode, ClientId}
28 import org.make.core.user.UserId
29 import org.make.api.technical.DatabaseTransactions._
30 import scalikejdbc._
31 
32 import scala.concurrent.Future
33 
34 trait DefaultPersistentAuthCodeServiceComponent extends PersistentAuthCodeServiceComponent with ShortenedNames {
35   self: MakeDBExecutionContextComponent =>
36 
37   override lazy val persistentAuthCodeService: PersistentAuthCodeService = new DefaultPersistentAuthCodeService
38 
39   private class DefaultPersistentAuthCodeService extends PersistentAuthCodeService {
40 
41     val alias
42       : scalikejdbc.QuerySQLSyntaxProvider[scalikejdbc.SQLSyntaxSupport[PersistentAuthCode], PersistentAuthCode] =
43       PersistentAuthCode.authCodeAlias
44 
45     val columns: scalikejdbc.ColumnName[PersistentAuthCode] = PersistentAuthCode.column
46 
47     override def persist(authCode: AuthCode): Future[AuthCode] = {
48       implicit val cxt: EC = readExecutionContext
49       Future(NamedDB("READ").retryableTx { implicit session =>
50         withSQL {
51           insert
52             .into(PersistentAuthCode)
53             .namedValues(
54               columns.authorizationCode -> authCode.authorizationCode,
55               columns.scope -> authCode.scope,
56               columns.redirectUri -> authCode.redirectUri,
57               columns.createdAt -> authCode.createdAt,
58               columns.expiresIn -> authCode.expiresIn,
59               columns.makeUserUuid -> authCode.user.value,
60               columns.clientUuid -> authCode.client.value
61             )
62         }.execute()
63       }).map(_ => authCode)
64     }
65 
66     override def findByCode(code: String): Future[Option[AuthCode]] = {
67       implicit val cxt: EC = readExecutionContext
68       Future(NamedDB("READ").retryableTx { implicit session =>
69         withSQL {
70           select
71             .from(PersistentAuthCode.as(alias))
72             .where(sqls.eq(alias.authorizationCode, code))
73         }.map(PersistentAuthCode.apply()).single()
74       }).map(_.map(_.toAuthCode))
75     }
76 
77     override def deleteByCode(code: String): Future[Unit] = {
78       implicit val cxt: EC = readExecutionContext
79       Future(NamedDB("READ").retryableTx { implicit session =>
80         withSQL {
81           delete
82             .from(PersistentAuthCode.as(alias))
83             .where(sqls.eq(alias.authorizationCode, code))
84         }.map(PersistentAuthCode.apply()).update()
85       }).void
86     }
87   }
88 }
89 
90 final case class PersistentAuthCode(
91   authorizationCode: String,
92   scope: Option[String],
93   redirectUri: Option[String],
94   createdAt: ZonedDateTime,
95   expiresIn: Int,
96   makeUserUuid: String,
97   clientUuid: String
98 ) {
99   def toAuthCode: AuthCode =
100     AuthCode(authorizationCode, scope, redirectUri, createdAt, expiresIn, UserId(makeUserUuid), ClientId(clientUuid))
101 }
102 
103 object PersistentAuthCode extends SQLSyntaxSupport[PersistentAuthCode] with ShortenedNames with Logging {
104   override val columnNames: Seq[String] =
105     Seq("authorization_code", "scope", "redirect_uri", "created_at", "expires_in", "make_user_uuid", "client_uuid")
106 
107   override val tableName: String = "auth_code"
108 
109   lazy val authCodeAlias: SyntaxProvider[PersistentAuthCode] = syntax("auth_code")
110 
111   def apply(
112     authCodeResultName: ResultName[PersistentAuthCode] = authCodeAlias.resultName
113   )(resultSet: WrappedResultSet): PersistentAuthCode = {
114     PersistentAuthCode(
115       authorizationCode = resultSet.string(authCodeResultName.authorizationCode),
116       scope = resultSet.stringOpt(authCodeResultName.scope),
117       redirectUri = resultSet.stringOpt(authCodeResultName.redirectUri),
118       createdAt = resultSet.zonedDateTime(authCodeResultName.createdAt),
119       expiresIn = resultSet.int(authCodeResultName.expiresIn),
120       makeUserUuid = resultSet.string(authCodeResultName.makeUserUuid),
121       clientUuid = resultSet.string(authCodeResultName.clientUuid)
122     )
123   }
124 }
Line Stmt Id Pos Tree Symbol Tests Code
45 20076 1749 - 1774 Select scalikejdbc.SQLSyntaxSupportFeature.SQLSyntaxSupport.column PersistentAuthCode.column
48 21646 1872 - 1892 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentAuthCodeServiceComponent.this.readExecutionContext
63 20590 1899 - 2520 ApplyToImplicitArgs scala.concurrent.Future.map scala.concurrent.Future.apply[Boolean]({ <artifact> val qual$1: org.make.api.technical.DatabaseTransactions.RichDatabase = org.make.api.technical.DatabaseTransactions.RichDatabase({ <artifact> val x$1: String("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$4: scalikejdbc.DBSession => Boolean @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.insert.into(PersistentAuthCode).namedValues((DefaultPersistentAuthCodeService.this.columns.field("authorizationCode"): scalikejdbc.interpolation.SQLSyntax).->[String](authCode.authorizationCode)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentAuthCodeService.this.columns.field("scope"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](authCode.scope)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentAuthCodeService.this.columns.field("redirectUri"): scalikejdbc.interpolation.SQLSyntax).->[Option[String]](authCode.redirectUri)(scalikejdbc.this.ParameterBinderFactory.optionalParameterBinderFactory[String](scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory)), (DefaultPersistentAuthCodeService.this.columns.field("createdAt"): scalikejdbc.interpolation.SQLSyntax).->[java.time.ZonedDateTime](authCode.createdAt)(scalikejdbc.this.ParameterBinderFactory.javaTimeZonedDateTimeParameterBinderFactory), (DefaultPersistentAuthCodeService.this.columns.field("expiresIn"): scalikejdbc.interpolation.SQLSyntax).->[Int](authCode.expiresIn)(scalikejdbc.this.ParameterBinderFactory.intParameterBinderFactory), (DefaultPersistentAuthCodeService.this.columns.field("makeUserUuid"): scalikejdbc.interpolation.SQLSyntax).->[String](authCode.user.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory), (DefaultPersistentAuthCodeService.this.columns.field("clientUuid"): scalikejdbc.interpolation.SQLSyntax).->[String](authCode.client.value)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).execute.apply()(session)); <artifact> val x$5: scalikejdbc.TxBoundary[Boolean] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Boolean](x$4); qual$1.retryableTx[Boolean](x$4)(x$5) })(cxt).map[org.make.core.auth.AuthCode](((x$1: Boolean) => authCode))(cxt)
67 19665 2629 - 2649 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentAuthCodeServiceComponent.this.readExecutionContext
74 21766 2656 - 2939 ApplyToImplicitArgs scala.concurrent.Future.map scala.concurrent.Future.apply[Option[org.make.api.technical.auth.PersistentAuthCode]]({ <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.technical.auth.PersistentAuthCode] @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => { <synthetic> <stable> <artifact> val stabilizer$1: scalikejdbc.SQLToOption[org.make.api.technical.auth.PersistentAuthCode,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = scalikejdbc.`package`.withSQL.apply[Nothing](scalikejdbc.`package`.select.from[Nothing](PersistentAuthCode.as(DefaultPersistentAuthCodeService.this.alias)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentAuthCodeService.this.alias.field("authorizationCode"): scalikejdbc.interpolation.SQLSyntax), code)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).map[org.make.api.technical.auth.PersistentAuthCode]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.technical.auth.PersistentAuthCode] = PersistentAuthCode.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => PersistentAuthCode.apply(eta$0$1)(resultSet)) }).single; { <artifact> val x$4: scalikejdbc.DBSession = session; <artifact> val x$5: scalikejdbc.SQL[org.make.api.technical.auth.PersistentAuthCode,scalikejdbc.HasExtractor] =:= scalikejdbc.SQL[org.make.api.technical.auth.PersistentAuthCode,scalikejdbc.HasExtractor] @scala.reflect.internal.annotations.uncheckedBounds = GeneralizedTypeConstraintsForWithExtractor.this.=:=.tpEquals[scalikejdbc.SQL[org.make.api.technical.auth.PersistentAuthCode,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.technical.auth.PersistentAuthCode]] @scala.reflect.internal.annotations.uncheckedBounds = qual$1.retryableTx$default$2[Option[org.make.api.technical.auth.PersistentAuthCode]](x$7); qual$1.retryableTx[Option[org.make.api.technical.auth.PersistentAuthCode]](x$7)(x$8) })(cxt).map[Option[org.make.core.auth.AuthCode]](((x$2: Option[org.make.api.technical.auth.PersistentAuthCode]) => x$2.map[org.make.core.auth.AuthCode](((x$3: org.make.api.technical.auth.PersistentAuthCode) => x$3.toAuthCode))))(cxt)
78 20883 3038 - 3058 Select org.make.api.extensions.MakeDBExecutionContextComponent.readExecutionContext DefaultPersistentAuthCodeServiceComponent.this.readExecutionContext
79 19897 3065 - 3323 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$4: scalikejdbc.DBSession => Int @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.delete.from(PersistentAuthCode.as(DefaultPersistentAuthCodeService.this.alias)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentAuthCodeService.this.alias.field("authorizationCode"): scalikejdbc.interpolation.SQLSyntax), code)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).map[org.make.api.technical.auth.PersistentAuthCode]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.technical.auth.PersistentAuthCode] = PersistentAuthCode.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => PersistentAuthCode.apply(eta$0$1)(resultSet)) }).update.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) })(cxt)
79 21392 3071 - 3071 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture cats.implicits.catsStdInstancesForFuture(cxt)
85 20989 3065 - 3328 Select cats.Functor.Ops.void cats.implicits.toFunctorOps[scala.concurrent.Future, Int](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$4: scalikejdbc.DBSession => Int @scala.reflect.internal.annotations.uncheckedBounds = ((implicit session: scalikejdbc.DBSession) => scalikejdbc.`package`.withSQL.apply[scalikejdbc.UpdateOperation](scalikejdbc.`package`.delete.from(PersistentAuthCode.as(DefaultPersistentAuthCodeService.this.alias)).where(scalikejdbc.`package`.sqls.eq[String]((DefaultPersistentAuthCodeService.this.alias.field("authorizationCode"): scalikejdbc.interpolation.SQLSyntax), code)(scalikejdbc.this.ParameterBinderFactory.stringParameterBinderFactory))).map[org.make.api.technical.auth.PersistentAuthCode]({ <synthetic> val eta$0$1: scalikejdbc.ResultName[org.make.api.technical.auth.PersistentAuthCode] = PersistentAuthCode.apply$default$1; ((resultSet: scalikejdbc.WrappedResultSet) => PersistentAuthCode.apply(eta$0$1)(resultSet)) }).update.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) })(cxt))(cats.implicits.catsStdInstancesForFuture(cxt)).void
100 20793 3669 - 3681 Select org.make.api.technical.auth.PersistentAuthCode.makeUserUuid PersistentAuthCode.this.makeUserUuid
100 21460 3693 - 3703 Select org.make.api.technical.auth.PersistentAuthCode.clientUuid PersistentAuthCode.this.clientUuid
100 20039 3592 - 3705 Apply org.make.core.auth.AuthCode.apply org.make.core.auth.AuthCode.apply(PersistentAuthCode.this.authorizationCode, PersistentAuthCode.this.scope, PersistentAuthCode.this.redirectUri, PersistentAuthCode.this.createdAt, PersistentAuthCode.this.expiresIn, org.make.core.user.UserId.apply(PersistentAuthCode.this.makeUserUuid), org.make.core.auth.ClientId.apply(PersistentAuthCode.this.clientUuid))
100 21609 3620 - 3625 Select org.make.api.technical.auth.PersistentAuthCode.scope PersistentAuthCode.this.scope
100 21776 3651 - 3660 Select org.make.api.technical.auth.PersistentAuthCode.expiresIn PersistentAuthCode.this.expiresIn
100 19868 3662 - 3682 Apply org.make.core.user.UserId.apply org.make.core.user.UserId.apply(PersistentAuthCode.this.makeUserUuid)
100 20032 3601 - 3618 Select org.make.api.technical.auth.PersistentAuthCode.authorizationCode PersistentAuthCode.this.authorizationCode
100 20684 3627 - 3638 Select org.make.api.technical.auth.PersistentAuthCode.redirectUri PersistentAuthCode.this.redirectUri
100 19697 3640 - 3649 Select org.make.api.technical.auth.PersistentAuthCode.createdAt PersistentAuthCode.this.createdAt
100 20964 3684 - 3704 Apply org.make.core.auth.ClientId.apply org.make.core.auth.ClientId.apply(PersistentAuthCode.this.clientUuid)
105 21612 3861 - 3972 Apply scala.collection.SeqFactory.Delegate.apply scala.`package`.Seq.apply[String]("authorization_code", "scope", "redirect_uri", "created_at", "expires_in", "make_user_uuid", "client_uuid")
107 20666 4009 - 4020 Literal <nosymbol> "auth_code"
114 20445 4262 - 4778 Apply org.make.api.technical.auth.PersistentAuthCode.apply PersistentAuthCode.apply(resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("authorizationCode"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("scope"): scalikejdbc.interpolation.SQLSyntax))), resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("redirectUri"): scalikejdbc.interpolation.SQLSyntax))), resultSet.zonedDateTime(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("createdAt"): scalikejdbc.interpolation.SQLSyntax))), resultSet.int(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("expiresIn"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("makeUserUuid"): scalikejdbc.interpolation.SQLSyntax))), resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("clientUuid"): scalikejdbc.interpolation.SQLSyntax))))
115 19660 4325 - 4361 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("authorizationCode"): scalikejdbc.interpolation.SQLSyntax))
115 21783 4308 - 4362 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("authorizationCode"): scalikejdbc.interpolation.SQLSyntax)))
116 19875 4378 - 4423 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("scope"): scalikejdbc.interpolation.SQLSyntax)))
116 20762 4398 - 4422 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("scope"): scalikejdbc.interpolation.SQLSyntax))
117 21385 4465 - 4495 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("redirectUri"): scalikejdbc.interpolation.SQLSyntax))
117 20444 4445 - 4496 Apply scalikejdbc.WrappedResultSet.stringOpt resultSet.stringOpt(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("redirectUri"): scalikejdbc.interpolation.SQLSyntax)))
118 20048 4540 - 4568 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("createdAt"): scalikejdbc.interpolation.SQLSyntax))
118 21573 4516 - 4569 Apply scalikejdbc.WrappedResultSet.zonedDateTime resultSet.zonedDateTime(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("createdAt"): scalikejdbc.interpolation.SQLSyntax)))
119 20670 4603 - 4631 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("expiresIn"): scalikejdbc.interpolation.SQLSyntax))
119 19628 4589 - 4632 Apply scalikejdbc.WrappedResultSet.int resultSet.int(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("expiresIn"): scalikejdbc.interpolation.SQLSyntax)))
120 21701 4672 - 4703 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("makeUserUuid"): scalikejdbc.interpolation.SQLSyntax))
120 20764 4655 - 4704 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("makeUserUuid"): scalikejdbc.interpolation.SQLSyntax)))
121 21390 4725 - 4772 Apply scalikejdbc.WrappedResultSet.string resultSet.string(scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("clientUuid"): scalikejdbc.interpolation.SQLSyntax)))
121 19837 4742 - 4771 ApplyImplicitView scalikejdbc.interpolation.Implicits.scalikejdbcSQLSyntaxToStringImplicitDef scalikejdbc.`package`.scalikejdbcSQLSyntaxToStringImplicitDef((authCodeResultName.field("clientUuid"): scalikejdbc.interpolation.SQLSyntax))