Skip to content

Instantly share code, notes, and snippets.

@JaniKibichi
Created June 18, 2021 16:09
Show Gist options
  • Save JaniKibichi/3be66fd9ded75bed635d696f24cd6847 to your computer and use it in GitHub Desktop.
Save JaniKibichi/3be66fd9ded75bed635d696f24cd6847 to your computer and use it in GitHub Desktop.
package com.janikibichi.services
object LanguageMenuProtocol{
def props(randomId:String):Props = Props(new LanguageMenuActor(randomId:String))
// WE CAN ONLY USE THIS ACTOR TO STORE NEW MENUS, TO FETCH WE EITHER FETCH MENU CONTENT OR MENU OPTIONS FROM RESPECTIVE ACTORS
final case class LanguageMenu(language: String, menucontent: List[MenuContent],menuoptions: List[MenuOptions])
final case class StoreLanguageMenu(languageMenu: LanguageMenu)
final case class MenuUpdate(status:String, message:String)
}
class LanguageMenuActor(randomId:String) extends Actor with ActorLogging{
def receive: Receive = {
case StoreLanguageMenu(languageMenu: LanguageMenu) =>
storeLanguageMenus(languageMenu: LanguageMenu).pipeTo(sender())
}
def storeLanguageMenus(languageMenu: LanguageMenu):Future[MenuUpdate] ={
val languageStoreActor = actorSystem.actorOf(LanguageStoreProtocol.props(Random.nextString(12)))
(languageStoreActor ? StoreLanguageMenu(languageMenu)).mapTo[MenuUpdate]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment