Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case class PlainEffect(
- ledgerSequence: Long,
- ledgerHash: String,
- transactionHash: String,
- transactionSequence: Long,
- operationSequence: Long,
- effectSequence: Long,
- operationType: String,
- effectType: String,
- transactionOwner: String,
- actionAccount: String,
- amountPaid: Option[Long],
- assetCodePaid: Option[String],
- amountReceived: Option[Long],
- assetReceived: Option[String],
- counterAgent: Option[String],
- additionalEffectProps: Option[String]
- )
- case class Transfer(agent: String, counterAgent: String, sendAmount: Long, sendCode: String, received: Long,
- receivedCode: String)
- object Balance{
- def empty = Balance(mutable.Map.empty[String, (Long, Long)])
- }
- case class Balance(map: mutable.Map[String, (Long, Long)]){
- def addSend(asset: String, amount: Long): Unit = {
- val (received, send): (Long, Long) = map.getOrElse(asset, (0,0))
- map.update(asset, (received, send + amount))
- }
- def addReceived(asset: String, amount: Long): Unit = {
- val (received, send): (Long, Long) = map.getOrElse(asset, (0,0))
- map.update(asset, (received + amount, send))
- }
- }
- object Balances{
- def empty: Balances = Balances(mutable.Map.empty[String,Balance])
- }
- case class Balances(map: mutable.Map[String, Balance]) {
- def addSend(account: String, asset: String, amount: Long): Unit = {
- val v = map getOrElse (account, Balance.empty)
- v.addSend(asset, amount)
- map.update(account, v)
- }
- def addReceived(account: String, asset: String, amount: Long): Unit = {
- val v = map getOrElse (account, Balance.empty)
- v.addReceived(asset, amount)
- map.update(account, v)
- }
- }
- def fromEffect(effect: PlainEffect): Option[Transfer] = ???
- def someFunc(effects: Seq[PlainEffect]): Balances =
- effects.flatMap { fromEffect }.foldLeft(Balances.empty) { (balances, transfer) =>
- val Transfer(agent, counterAgent, sendAmount, sendCode, received, receivedCode) = transfer
- balances.addReceived(agent, receivedCode, received)
- balances.addReceived(counterAgent, sendCode, sendAmount)
- balances
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement