diff --git a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseBiSHandler.scala b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseBiSHandler.scala index ada5b4a..6e4cd84 100644 --- a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseBiSHandler.scala +++ b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseBiSHandler.scala @@ -8,30 +8,32 @@ */ package me.arcanis.ffxivbis.service.database.impl +import akka.actor.typed.Behavior import akka.actor.typed.scaladsl.Behaviors import me.arcanis.ffxivbis.messages._ import me.arcanis.ffxivbis.service.database.Database trait DatabaseBiSHandler { this: Database => - def bisHandler: DatabaseMessage.Handler = { - case AddPieceToBis(playerId, piece, client) => - run(profile.insertPieceBiS(playerId, piece))(_ => client ! ()) - Behaviors.same + def bisHandler(msg: BisDatabaseMessage): Behavior[DatabaseMessage] = + msg match { + case AddPieceToBis(playerId, piece, client) => + run(profile.insertPieceBiS(playerId, piece))(_ => client ! ()) + Behaviors.same - case GetBiS(partyId, maybePlayerId, client) => - run { - getParty(partyId, withBiS = true, withLoot = false) - .map(filterParty(_, maybePlayerId)) - }(client ! _) - Behaviors.same + case GetBiS(partyId, maybePlayerId, client) => + run { + getParty(partyId, withBiS = true, withLoot = false) + .map(filterParty(_, maybePlayerId)) + }(client ! _) + Behaviors.same - case RemovePieceFromBiS(playerId, piece, client) => - run(profile.deletePieceBiS(playerId, piece))(_ => client ! ()) - Behaviors.same + case RemovePieceFromBiS(playerId, piece, client) => + run(profile.deletePieceBiS(playerId, piece))(_ => client ! ()) + Behaviors.same - case RemovePiecesFromBiS(playerId, client) => - run(profile.deletePiecesBiS(playerId))(_ => client ! ()) - Behaviors.same - } + case RemovePiecesFromBiS(playerId, client) => + run(profile.deletePiecesBiS(playerId))(_ => client ! ()) + Behaviors.same + } } diff --git a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseImpl.scala b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseImpl.scala index 5fdefeb..6f9394a 100644 --- a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseImpl.scala +++ b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseImpl.scala @@ -11,7 +11,7 @@ package me.arcanis.ffxivbis.service.database.impl import akka.actor.typed.scaladsl.{AbstractBehavior, ActorContext} import akka.actor.typed.{Behavior, DispatcherSelector} import com.typesafe.config.Config -import me.arcanis.ffxivbis.messages.DatabaseMessage +import me.arcanis.ffxivbis.messages.{BisDatabaseMessage, DatabaseMessage, LootDatabaseMessage, PartyDatabaseMessage, UserDatabaseMessage} import me.arcanis.ffxivbis.service.database.Database import me.arcanis.ffxivbis.storage.DatabaseProfile @@ -32,8 +32,12 @@ class DatabaseImpl(context: ActorContext[DatabaseMessage]) override val config: Config = context.system.settings.config override val profile: DatabaseProfile = new DatabaseProfile(executionContext, config) - override def onMessage(msg: DatabaseMessage): Behavior[DatabaseMessage] = handle(msg) + override def onMessage(msg: DatabaseMessage): Behavior[DatabaseMessage] = + msg match { + case msg: BisDatabaseMessage => bisHandler(msg) + case msg: LootDatabaseMessage => lootHandler(msg) + case msg: PartyDatabaseMessage => partyHandler(msg) + case msg: UserDatabaseMessage => userHandler(msg) + } - private def handle: DatabaseMessage.Handler = - bisHandler.orElse(lootHandler).orElse(partyHandler).orElse(userHandler) } diff --git a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseLootHandler.scala b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseLootHandler.scala index 2fd0b54..53a36a2 100644 --- a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseLootHandler.scala +++ b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseLootHandler.scala @@ -8,6 +8,7 @@ */ package me.arcanis.ffxivbis.service.database.impl +import akka.actor.typed.Behavior import akka.actor.typed.scaladsl.Behaviors import me.arcanis.ffxivbis.messages._ import me.arcanis.ffxivbis.models.Loot @@ -17,28 +18,29 @@ import java.time.Instant trait DatabaseLootHandler { this: Database => - def lootHandler: DatabaseMessage.Handler = { - case AddPieceTo(playerId, piece, isFreeLoot, client) => - val loot = Loot(-1, piece, Instant.now, isFreeLoot) - run(profile.insertPiece(playerId, loot))(_ => client ! ()) - Behaviors.same + def lootHandler(msg: LootDatabaseMessage): Behavior[DatabaseMessage] = + msg match { + case AddPieceTo(playerId, piece, isFreeLoot, client) => + val loot = Loot(-1, piece, Instant.now, isFreeLoot) + run(profile.insertPiece(playerId, loot))(_ => client ! ()) + Behaviors.same - case GetLoot(partyId, maybePlayerId, client) => - run { - getParty(partyId, withBiS = false, withLoot = true) - .map(filterParty(_, maybePlayerId)) - }(client ! _) - Behaviors.same + case GetLoot(partyId, maybePlayerId, client) => + run { + getParty(partyId, withBiS = false, withLoot = true) + .map(filterParty(_, maybePlayerId)) + }(client ! _) + Behaviors.same - case RemovePieceFrom(playerId, piece, isFreeLoot, client) => - run(profile.deletePiece(playerId, piece, isFreeLoot))(_ => client ! ()) - Behaviors.same + case RemovePieceFrom(playerId, piece, isFreeLoot, client) => + run(profile.deletePiece(playerId, piece, isFreeLoot))(_ => client ! ()) + Behaviors.same - case SuggestLoot(partyId, piece, client) => - run { - getParty(partyId, withBiS = true, withLoot = true) - .map(_.suggestLoot(piece)) - }(client ! _) - Behaviors.same - } + case SuggestLoot(partyId, piece, client) => + run { + getParty(partyId, withBiS = true, withLoot = true) + .map(_.suggestLoot(piece)) + }(client ! _) + Behaviors.same + } } diff --git a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabasePartyHandler.scala b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabasePartyHandler.scala index 964c791..65a32c4 100644 --- a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabasePartyHandler.scala +++ b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabasePartyHandler.scala @@ -8,6 +8,7 @@ */ package me.arcanis.ffxivbis.service.database.impl +import akka.actor.typed.Behavior import akka.actor.typed.scaladsl.Behaviors import me.arcanis.ffxivbis.messages._ import me.arcanis.ffxivbis.models.{BiS, Player} @@ -17,50 +18,51 @@ import scala.concurrent.Future trait DatabasePartyHandler { this: Database => - def partyHandler: DatabaseMessage.Handler = { - case AddPlayer(player, client) => - run(profile.insertPlayer(player))(_ => client ! ()) - Behaviors.same + def partyHandler(msg: PartyDatabaseMessage): Behavior[DatabaseMessage] = + msg match { + case AddPlayer(player, client) => + run(profile.insertPlayer(player))(_ => client ! ()) + Behaviors.same - case GetParty(partyId, client) => - run(getParty(partyId, withBiS = true, withLoot = true))(client ! _) - Behaviors.same + case GetParty(partyId, client) => + run(getParty(partyId, withBiS = true, withLoot = true))(client ! _) + Behaviors.same - case GetPartyDescription(partyId, client) => - run(profile.getPartyDescription(partyId))(client ! _) - Behaviors.same + case GetPartyDescription(partyId, client) => + run(profile.getPartyDescription(partyId))(client ! _) + Behaviors.same - case GetPlayer(playerId, client) => - run { - profile - .getPlayerFull(playerId) - .flatMap { maybePlayerData => - Future.traverse(maybePlayerData.toSeq) { playerData => - for { - bis <- profile.getPiecesBiS(playerId) - loot <- profile.getPieces(playerId) - } yield Player( - playerData.id, - playerId.partyId, - playerId.job, - playerId.nick, - BiS(bis.map(_.piece)), - loot, - playerData.link, - playerData.priority - ) + case GetPlayer(playerId, client) => + run { + profile + .getPlayerFull(playerId) + .flatMap { maybePlayerData => + Future.traverse(maybePlayerData.toSeq) { playerData => + for { + bis <- profile.getPiecesBiS(playerId) + loot <- profile.getPieces(playerId) + } yield Player( + playerData.id, + playerId.partyId, + playerId.job, + playerId.nick, + BiS(bis.map(_.piece)), + loot, + playerData.link, + playerData.priority + ) + } } - } - .map(_.headOption) - }(client ! _) - Behaviors.same + .map(_.headOption) + }(client ! _) + Behaviors.same - case RemovePlayer(playerId, client) => - run(profile.deletePlayer(playerId))(_ => client ! ()) - Behaviors.same + case RemovePlayer(playerId, client) => + run(profile.deletePlayer(playerId))(_ => client ! ()) + Behaviors.same - case UpdateParty(description, client) => - run(profile.insertPartyDescription(description))(_ => client ! ()) - Behaviors.same - } + case UpdateParty(description, client) => + run(profile.insertPartyDescription(description))(_ => client ! ()) + Behaviors.same + } } diff --git a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseUserHandler.scala b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseUserHandler.scala index 0e1caaa..a4e52ae 100644 --- a/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseUserHandler.scala +++ b/src/main/scala/me/arcanis/ffxivbis/service/database/impl/DatabaseUserHandler.scala @@ -8,32 +8,34 @@ */ package me.arcanis.ffxivbis.service.database.impl +import akka.actor.typed.Behavior import akka.actor.typed.scaladsl.Behaviors import me.arcanis.ffxivbis.messages._ import me.arcanis.ffxivbis.service.database.Database trait DatabaseUserHandler { this: Database => - def userHandler: DatabaseMessage.Handler = { - case AddUser(user, isHashedPassword, client) => - val toInsert = if (isHashedPassword) user else user.withHashedPassword - run(profile.insertUser(toInsert))(_ => client ! ()) - Behaviors.same + def userHandler(msg: UserDatabaseMessage): Behavior[DatabaseMessage] = + msg match { + case AddUser(user, isHashedPassword, client) => + val toInsert = if (isHashedPassword) user else user.withHashedPassword + run(profile.insertUser(toInsert))(_ => client ! ()) + Behaviors.same - case DeleteUser(partyId, username, client) => - run(profile.deleteUser(partyId, username))(_ => client ! ()) - Behaviors.same + case DeleteUser(partyId, username, client) => + run(profile.deleteUser(partyId, username))(_ => client ! ()) + Behaviors.same - case Exists(partyId, client) => - run(profile.exists(partyId))(client ! _) - Behaviors.same + case Exists(partyId, client) => + run(profile.exists(partyId))(client ! _) + Behaviors.same - case GetUser(partyId, username, client) => - run(profile.getUser(partyId, username))(client ! _) - Behaviors.same + case GetUser(partyId, username, client) => + run(profile.getUser(partyId, username))(client ! _) + Behaviors.same - case GetUsers(partyId, client) => - run(profile.getUsers(partyId))(client ! _) - Behaviors.same - } + case GetUsers(partyId, client) => + run(profile.getUsers(partyId))(client ! _) + Behaviors.same + } }