Skip to content

Commit

Permalink
优化原生SQL类型映射
Browse files Browse the repository at this point in the history
  • Loading branch information
wangzhang7982 committed Sep 17, 2023
1 parent c46016d commit 2011810
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 4 deletions.
4 changes: 2 additions & 2 deletions core/src/main/scala/easysql/database/DBOperator.scala
Expand Up @@ -59,13 +59,13 @@ trait DBOperator[D, F[_] : DBMonad] {
} yield data.map(bind[ResultType[T]](0, _))
}

inline def queryMonad[T <: Tuple](x: D, query: NativeSql)(using logger: Logger): F[List[ResultType[T]]] = {
inline def queryMonad[T](x: D, query: NativeSql)(using logger: Logger): F[List[NativeSqlResultType[T]]] = {
val info = query.preparedSql(db(x))
logger.apply(s"execute sql: \n${info._1}")

for {
data <- querySql(x, info._1, info._2)
} yield data.map(bind[ResultType[T]](0, _))
} yield data.map(bind[NativeSqlResultType[T]](0, _))
}

inline def querySkipNoneRowsMonad[T](x: D, query: Query[Tuple1[T], ?])(using logger: Logger): F[List[T]] = {
Expand Down
5 changes: 5 additions & 0 deletions core/src/main/scala/easysql/dsl/TypeLevel.scala
Expand Up @@ -85,6 +85,11 @@ type ResultType[T <: Tuple] = T match {
case _ => MapOption[T]
}

type NativeSqlResultType[T] = T match {
case Tuple => ResultType[T]
case _ => Option[T]
}

type MapOption[T <: Tuple] = T match {
case h *: t => Option[h] *: MapOption[t]
case EmptyTuple => EmptyTuple
Expand Down
2 changes: 1 addition & 1 deletion jdbc/src/main/scala/easysql/database/JdbcConnection.scala
Expand Up @@ -96,7 +96,7 @@ object JdbcConnection {
inline def query[T <: Tuple](query: With[T])(using logger: Logger): List[ResultType[T]] =
queryMonad(x, query).get

inline def query[T <: Tuple](query: NativeSql)(using logger: Logger): List[ResultType[T]] =
inline def query[T](query: NativeSql)(using logger: Logger): List[NativeSqlResultType[T]] =
queryMonad[T](x, query).get

inline def querySkipNoneRows[T](query: Query[Tuple1[T], ?])(using logger: Logger): List[T] =
Expand Down
2 changes: 1 addition & 1 deletion jdbc/src/main/scala/easysql/database/JdbcTransaction.scala
Expand Up @@ -45,7 +45,7 @@ inline def query[T <: Tuple](query: MonadicQuery[T, ?])(using logger: Logger, t:
inline def query[T <: Tuple](query: With[T])(using logger: Logger, t: JdbcTransaction): List[ResultType[T]] =
summon[DBOperator[JdbcTransaction, Id]].queryMonad(t, query).get

inline def query[T <: Tuple](query: NativeSql)(using logger: Logger, t: JdbcTransaction): List[ResultType[T]] =
inline def query[T](query: NativeSql)(using logger: Logger, t: JdbcTransaction): List[NativeSqlResultType[T]] =
summon[DBOperator[JdbcTransaction, Id]].queryMonad[T](t, query).get

inline def querySkipNoneRows[T](query: Query[Tuple1[T], ?])(using logger: Logger, t: JdbcTransaction): List[T] =
Expand Down

0 comments on commit 2011810

Please sign in to comment.