Last active
August 29, 2015 14:10
-
-
Save noelmarkham/31c426a7e945f8ddccc1 to your computer and use it in GitHub Desktop.
Futures and lenses
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
scala> usernameToUserIdLens.get("Alan").foreach(println) | |
** SELECT ID FROM USERS WHERE NAME = Alan | |
1 | |
scala> userIdToStreetNameLens.get(1).foreach(println) | |
** SELECT STREET_NAME FROM ADDRESS WHERE USER_ID = 1 | |
High Street | |
scala> val usernameToStreetNameLens = usernameToUserIdLens >=> userIdToStreetNameLens | |
scala> usernameToStreetNameLens.get("Alan").foreach(println) | |
** SELECT ID FROM USERS WHERE NAME = Alan | |
** SELECT STREET_NAME FROM ADDRESS WHERE USER_ID = 1 | |
High Street | |
scala> usernameToStreetNameLens.set("Alan", "New Street") | |
** SELECT ID FROM USERS WHERE NAME = Alan | |
** SELECT STREET_NAME FROM ADDRESS WHERE USER_ID = 1 | |
** UPDATE ADDRESS SET STREET_NAME = New Street WHERE USER_ID = 1 | |
res99: scala.concurrent.Future[String] = scala.concurrent.impl.Promise$DefaultPromise@11a0c15c | |
** UPDATE USERS SET NAME = Alan WHERE ID = 1 | |
scala> usernameToStreetNameLens.get("Alan").foreach(println) | |
** SELECT ID FROM USERS WHERE NAME = Alan | |
** SELECT STREET_NAME FROM ADDRESS WHERE USER_ID = 1 | |
New Street |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment