From b4df50edacb265972eb272a04ca4348f43acca23 Mon Sep 17 00:00:00 2001 From: Alexis Hernandez Date: Sun, 15 Apr 2018 00:27:54 -0500 Subject: [PATCH] server: Add BalanceOrderingParser --- .../explorer/models/fields/BalanceField.scala | 23 +++++++++++++++++++ .../parsers/BalanceOrderingParser.scala | 15 ++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 server/app/com/xsn/explorer/models/fields/BalanceField.scala create mode 100644 server/app/com/xsn/explorer/parsers/BalanceOrderingParser.scala diff --git a/server/app/com/xsn/explorer/models/fields/BalanceField.scala b/server/app/com/xsn/explorer/models/fields/BalanceField.scala new file mode 100644 index 0000000..3d9975e --- /dev/null +++ b/server/app/com/xsn/explorer/models/fields/BalanceField.scala @@ -0,0 +1,23 @@ +package com.xsn.explorer.models.fields + +import com.xsn.explorer.data.anorm.interpreters.ColumnNameResolver + +sealed abstract class BalanceField(val string: String) + +object BalanceField { + + case object Available extends BalanceField("available") + case object Received extends BalanceField("received") + case object Spent extends BalanceField("spent") + case object Address extends BalanceField("address") + + def from(string: String): Option[BalanceField] = string match { + case Available.string => Some(Available) + case Received.string => Some(Received) + case Spent.string => Some(Spent) + case Address.string => Some(Address) + case _ => None + } + + implicit val columnNameResolver: ColumnNameResolver[BalanceField] = (field) => field.string +} diff --git a/server/app/com/xsn/explorer/parsers/BalanceOrderingParser.scala b/server/app/com/xsn/explorer/parsers/BalanceOrderingParser.scala new file mode 100644 index 0000000..0128478 --- /dev/null +++ b/server/app/com/xsn/explorer/parsers/BalanceOrderingParser.scala @@ -0,0 +1,15 @@ +package com.xsn.explorer.parsers + +import com.xsn.explorer.models.base.OrderingCondition +import com.xsn.explorer.models.fields.BalanceField + +class BalanceOrderingParser extends FieldOrderingParser[BalanceField] { + + override protected val defaultField = BalanceField.Available + + override protected val defaultOrderingCondition: OrderingCondition = OrderingCondition.DescendingOrder + + override protected def parseField(unsafeField: String): Option[BalanceField] = { + BalanceField.from(unsafeField) + } +}