mirror of
				https://github.com/arcan1s/ffxivbis.git
				synced 2025-10-30 21:23:41 +00:00 
			
		
		
		
	more typed actors
This commit is contained in:
		| @ -8,13 +8,15 @@ | |||||||
|  */ |  */ | ||||||
| package me.arcanis.ffxivbis.service.database.impl | package me.arcanis.ffxivbis.service.database.impl | ||||||
|  |  | ||||||
|  | import akka.actor.typed.Behavior | ||||||
| import akka.actor.typed.scaladsl.Behaviors | import akka.actor.typed.scaladsl.Behaviors | ||||||
| import me.arcanis.ffxivbis.messages._ | import me.arcanis.ffxivbis.messages._ | ||||||
| import me.arcanis.ffxivbis.service.database.Database | import me.arcanis.ffxivbis.service.database.Database | ||||||
|  |  | ||||||
| trait DatabaseBiSHandler { this: Database => | trait DatabaseBiSHandler { this: Database => | ||||||
|  |  | ||||||
|   def bisHandler: DatabaseMessage.Handler = { |   def bisHandler(msg: BisDatabaseMessage): Behavior[DatabaseMessage] = | ||||||
|  |     msg match { | ||||||
|       case AddPieceToBis(playerId, piece, client) => |       case AddPieceToBis(playerId, piece, client) => | ||||||
|         run(profile.insertPieceBiS(playerId, piece))(_ => client ! ()) |         run(profile.insertPieceBiS(playerId, piece))(_ => client ! ()) | ||||||
|         Behaviors.same |         Behaviors.same | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ package me.arcanis.ffxivbis.service.database.impl | |||||||
| import akka.actor.typed.scaladsl.{AbstractBehavior, ActorContext} | import akka.actor.typed.scaladsl.{AbstractBehavior, ActorContext} | ||||||
| import akka.actor.typed.{Behavior, DispatcherSelector} | import akka.actor.typed.{Behavior, DispatcherSelector} | ||||||
| import com.typesafe.config.Config | 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.service.database.Database | ||||||
| import me.arcanis.ffxivbis.storage.DatabaseProfile | 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 config: Config = context.system.settings.config | ||||||
|   override val profile: DatabaseProfile = new DatabaseProfile(executionContext, 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 { | ||||||
|   private def handle: DatabaseMessage.Handler = |       case msg: BisDatabaseMessage => bisHandler(msg) | ||||||
|     bisHandler.orElse(lootHandler).orElse(partyHandler).orElse(userHandler) |       case msg: LootDatabaseMessage => lootHandler(msg) | ||||||
|  |       case msg: PartyDatabaseMessage => partyHandler(msg) | ||||||
|  |       case msg: UserDatabaseMessage => userHandler(msg) | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ | |||||||
|  */ |  */ | ||||||
| package me.arcanis.ffxivbis.service.database.impl | package me.arcanis.ffxivbis.service.database.impl | ||||||
|  |  | ||||||
|  | import akka.actor.typed.Behavior | ||||||
| import akka.actor.typed.scaladsl.Behaviors | import akka.actor.typed.scaladsl.Behaviors | ||||||
| import me.arcanis.ffxivbis.messages._ | import me.arcanis.ffxivbis.messages._ | ||||||
| import me.arcanis.ffxivbis.models.Loot | import me.arcanis.ffxivbis.models.Loot | ||||||
| @ -17,7 +18,8 @@ import java.time.Instant | |||||||
|  |  | ||||||
| trait DatabaseLootHandler { this: Database => | trait DatabaseLootHandler { this: Database => | ||||||
|  |  | ||||||
|   def lootHandler: DatabaseMessage.Handler = { |   def lootHandler(msg: LootDatabaseMessage): Behavior[DatabaseMessage] = | ||||||
|  |     msg match { | ||||||
|       case AddPieceTo(playerId, piece, isFreeLoot, client) => |       case AddPieceTo(playerId, piece, isFreeLoot, client) => | ||||||
|         val loot = Loot(-1, piece, Instant.now, isFreeLoot) |         val loot = Loot(-1, piece, Instant.now, isFreeLoot) | ||||||
|         run(profile.insertPiece(playerId, loot))(_ => client ! ()) |         run(profile.insertPiece(playerId, loot))(_ => client ! ()) | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ | |||||||
|  */ |  */ | ||||||
| package me.arcanis.ffxivbis.service.database.impl | package me.arcanis.ffxivbis.service.database.impl | ||||||
|  |  | ||||||
|  | import akka.actor.typed.Behavior | ||||||
| import akka.actor.typed.scaladsl.Behaviors | import akka.actor.typed.scaladsl.Behaviors | ||||||
| import me.arcanis.ffxivbis.messages._ | import me.arcanis.ffxivbis.messages._ | ||||||
| import me.arcanis.ffxivbis.models.{BiS, Player} | import me.arcanis.ffxivbis.models.{BiS, Player} | ||||||
| @ -17,7 +18,8 @@ import scala.concurrent.Future | |||||||
|  |  | ||||||
| trait DatabasePartyHandler { this: Database => | trait DatabasePartyHandler { this: Database => | ||||||
|  |  | ||||||
|   def partyHandler: DatabaseMessage.Handler = { |   def partyHandler(msg: PartyDatabaseMessage): Behavior[DatabaseMessage] = | ||||||
|  |     msg match { | ||||||
|       case AddPlayer(player, client) => |       case AddPlayer(player, client) => | ||||||
|         run(profile.insertPlayer(player))(_ => client ! ()) |         run(profile.insertPlayer(player))(_ => client ! ()) | ||||||
|         Behaviors.same |         Behaviors.same | ||||||
|  | |||||||
| @ -8,13 +8,15 @@ | |||||||
|  */ |  */ | ||||||
| package me.arcanis.ffxivbis.service.database.impl | package me.arcanis.ffxivbis.service.database.impl | ||||||
|  |  | ||||||
|  | import akka.actor.typed.Behavior | ||||||
| import akka.actor.typed.scaladsl.Behaviors | import akka.actor.typed.scaladsl.Behaviors | ||||||
| import me.arcanis.ffxivbis.messages._ | import me.arcanis.ffxivbis.messages._ | ||||||
| import me.arcanis.ffxivbis.service.database.Database | import me.arcanis.ffxivbis.service.database.Database | ||||||
|  |  | ||||||
| trait DatabaseUserHandler { this: Database => | trait DatabaseUserHandler { this: Database => | ||||||
|  |  | ||||||
|   def userHandler: DatabaseMessage.Handler = { |   def userHandler(msg: UserDatabaseMessage): Behavior[DatabaseMessage] = | ||||||
|  |     msg match { | ||||||
|       case AddUser(user, isHashedPassword, client) => |       case AddUser(user, isHashedPassword, client) => | ||||||
|         val toInsert = if (isHashedPassword) user else user.withHashedPassword |         val toInsert = if (isHashedPassword) user else user.withHashedPassword | ||||||
|         run(profile.insertUser(toInsert))(_ => client ! ()) |         run(profile.insertUser(toInsert))(_ => client ! ()) | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user