aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/db/MysqlQueryBuilder.scala64
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))
}
-
}