Skip to content

Instantly share code, notes, and snippets.

View mmollaverdi's full-sized avatar

Mehdi Mollaverdi mmollaverdi

  • Melbourne
View GitHub Profile
def getSystemStatusInfo(id: String): Option[SystemStatusInfo] = ???
case class SystemStatusInfo(system: System, status: SystemStatus)
val systemStatusMap: Map[String, SystemStatus] = Map(
"consumer_desktop" -> Red,
"consumer_msite" -> Green
)
def getOwnerName(systemId: String): Option[String] = {
systemsMap.get(systemId).flatMap(system => ownersMap.get(system.ownerId)).map(_.name)
}
scala> getOwnerName("consumer_desktop")
res0: Option[String] = Some(Consumer web team)
scala> getOwnerName("no_such_system_id")
res3: Option[String] = None
def getOwnerName(systemId: String): Option[String] = {
val systemOption: Option[System] = systemsMap.get(systemId)
val ownerOption: Option[Owner] = systemOption.flatMap(system => ownersMap.get(system.ownerId))
ownerOption.map(owner => owner.name)
}
scala> systemsMap.get("consumer_desktop")
res1: Option[System] = Some(System(consumer_desktop,realestate.com.au desktop site,consumer_web))
scala> systemsMap.get("unknown")
res2: Option[System] = None
val systemsMap = Map(
"consumer_desktop" -> System(id = "consumer_desktop", name = "realestate.com.au desktop site", ownerId = "consumer_web"),
"consumer_msite" -> System(id = "consumer_msite", name = "realestate.com.au mobile site", ownerId = "consumer_web")
)
val ownersMap = Map(
"consumer_web" -> Owner(id = "consumer_web", name = "Consumer web team"),
"consumer_apps" -> Owner(id = "consumer_apps", name = "Consumer apps team")
)
case class System(id: String, name: String, ownerId: String)
case class Owner(id: String, name: String)
sealed trait SystemStatus
case object Green extends SystemStatus
case object Red extends SystemStatus
const stateUpdaterProvider = stateTransformers => Component => {
class StateUpdaterProvider extends React.Component {
getChildContext() {
return stateTransformers;
}
render() {
return <Component {...this.props} />;
}
}