Browse Source

server: Add FieldOrderingSQLInterpreter

scalafmt-draft
Alexis Hernandez 7 years ago
parent
commit
c17dcb8930
  1. 11
      server/app/com/xsn/explorer/data/anorm/interpreters/ColumnNameResolver.scala
  2. 18
      server/app/com/xsn/explorer/data/anorm/interpreters/FieldOrderingSQLInterpreter.scala

11
server/app/com/xsn/explorer/data/anorm/interpreters/ColumnNameResolver.scala

@ -0,0 +1,11 @@
package com.xsn.explorer.data.anorm.interpreters
import scala.annotation.implicitNotFound
@implicitNotFound(
"No column name resolver found for type ${A}. Try to implement an implicit ColumnNameResolver for this type."
)
trait ColumnNameResolver[A] {
def getColumnName(field: A): String
}

18
server/app/com/xsn/explorer/data/anorm/interpreters/FieldOrderingSQLInterpreter.scala

@ -0,0 +1,18 @@
package com.xsn.explorer.data.anorm.interpreters
import com.xsn.explorer.models.base.{FieldOrdering, OrderingCondition}
class FieldOrderingSQLInterpreter {
def toOrderByClause[A](fieldOrdering: FieldOrdering[A])(implicit columnNameResolver: ColumnNameResolver[A]) = {
val field = columnNameResolver.getColumnName(fieldOrdering.field)
val condition = getCondition(fieldOrdering.orderingCondition)
s"ORDER BY $field $condition"
}
private def getCondition(ordering: OrderingCondition) = ordering match {
case OrderingCondition.AscendingOrder => "ASC"
case OrderingCondition.DescendingOrder => "DESC"
}
}
Loading…
Cancel
Save