diff options
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala | 64 |
1 files changed, 30 insertions, 34 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala b/src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala index 6b7639a..e2936e3 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala @@ -2,12 +2,12 @@ package xyz.driver.pdsuicommon.db import java.sql.ResultSet +import xyz.driver.pdsuicommon.logging._ import io.getquill.{MySQLDialect, MysqlEscape} import scala.collection.breakOut -import scala.concurrent.{ExecutionContext, Future} -object MysqlQueryBuilder { +object MysqlQueryBuilder extends PhiLogging { import xyz.driver.pdsuicommon.db.QueryBuilder._ def apply[T](tableName: String, @@ -15,46 +15,44 @@ object MysqlQueryBuilder { nullableFields: Set[String], links: Set[TableLink], runner: Runner[T], - countRunner: CountRunner)(implicit ec: ExecutionContext): MysqlQueryBuilder[T] = { + countRunner: CountRunner): MysqlQueryBuilder[T] = { val parameters = MysqlQueryBuilderParameters( tableData = TableData(tableName, lastUpdateFieldName, nullableFields), links = links.map(x => x.foreignTableName -> x)(breakOut) ) - new MysqlQueryBuilder[T](parameters)(runner, countRunner, ec) + new MysqlQueryBuilder[T](parameters)(runner, countRunner) } def apply[T](tableName: String, lastUpdateFieldName: Option[String], nullableFields: Set[String], links: Set[TableLink], - extractor: (ResultSet) => T)(implicit sqlContext: SqlContext): MysqlQueryBuilder[T] = { - - val runner = (parameters: QueryBuilderParameters) => { - Future { - val (sql, binder) = parameters.toSql(namingStrategy = MysqlEscape) - sqlContext.executeQuery[T](sql, binder, { resultSet => - extractor(resultSet) - }) - }(sqlContext.executionContext) + extractor: (ResultSet) => T)(implicit sqlContext: MySqlContext): MysqlQueryBuilder[T] = { + + val runner: Runner[T] = { parameters => + val (sql, binder) = parameters.toSql(namingStrategy = MysqlEscape) + logger.trace(phi"Query for execute: ${Unsafe(sql)}") + sqlContext.executeQuery[T](sql, binder, { resultSet => + extractor(resultSet) + }) } - val countRunner = (parameters: QueryBuilderParameters) => { - Future { - val (sql, binder) = parameters.toSql(countQuery = true, namingStrategy = MysqlEscape) - sqlContext - .executeQuery[CountResult]( - sql, - binder, { resultSet => - val count = resultSet.getInt(1) - val lastUpdate = if (parameters.tableData.lastUpdateFieldName.isDefined) { - Option(sqlContext.localDateTimeDecoder.decoder(2, resultSet)) - } else None - - (count, lastUpdate) - } - ) - .head - }(sqlContext.executionContext) + val countRunner: CountRunner = { parameters => + val (sql, binder) = parameters.toSql(countQuery = true, namingStrategy = MysqlEscape) + logger.trace(phi"Query for execute: ${Unsafe(sql)}") + sqlContext + .executeQuery[CountResult]( + sql, + binder, { resultSet => + val count = resultSet.getInt(1) + val lastUpdate = if (parameters.tableData.lastUpdateFieldName.isDefined) { + Option(sqlContext.localDateTimeDecoder.decoder(2, resultSet)) + } else None + + (count, lastUpdate) + } + ) + .head } apply[T]( @@ -64,13 +62,12 @@ object MysqlQueryBuilder { links = links, runner = runner, countRunner = countRunner - )(sqlContext.executionContext) + ) } } class MysqlQueryBuilder[T](parameters: MysqlQueryBuilderParameters)(implicit runner: QueryBuilder.Runner[T], - countRunner: QueryBuilder.CountRunner, - ec: ExecutionContext) + countRunner: QueryBuilder.CountRunner) extends QueryBuilder[T, MySQLDialect, MysqlEscape](parameters) { def withFilter(newFilter: SearchFilterExpr): QueryBuilder[T, MySQLDialect, MysqlEscape] = { @@ -88,5 +85,4 @@ class MysqlQueryBuilder[T](parameters: MysqlQueryBuilderParameters)(implicit run def resetPagination: QueryBuilder[T, MySQLDialect, MysqlEscape] = { new MysqlQueryBuilder[T](parameters.copy(pagination = None)) } - } |