Last active
October 29, 2017 20:05
-
-
Save debasishg/33d5a9f0d497abd280a6af2dbb60fbbd to your computer and use it in GitHub Desktop.
CQRS session on the REPL for Chapter 8
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> import frdomain.ch8.cqrs.service._ | |
import frdomain.ch8.cqrs.service._ | |
scala> import Scripts._ | |
import Scripts._ | |
scala> import RepositoryBackedAccountInterpreter._ | |
import RepositoryBackedAccountInterpreter._ | |
scala> RepositoryBackedAccountInterpreter(composite) | |
res0: scalaz.concurrent.Task[frdomain.ch8.cqrs.service.Account] = scalaz.concurrent.Task@4ab3b0a5 | |
scala> import scalaz._ | |
import scalaz._ | |
scala> import Scalaz._ | |
import Scalaz._ | |
scala> import \/._ | |
import $bslash$div._ | |
scala> res0.unsafePerformAsync { | |
| case -\/(ex) => ex.printStackTrace | |
| case \/-(value) => println(value) | |
| } | |
scala> Account(a-123,debasish ghosh,2017-10-29T20:13:03.000+05:30,None,Balance(17000)) | |
scala> for { | |
| a <- credit("a-123", 1000) | |
| b <- open("a-124", "john j", Some(org.joda.time.DateTime.now())) | |
| c <- credit(b.no, 1200) | |
| } yield c | |
res4: scalaz.Free[frdomain.ch8.cqrs.lib.Event,frdomain.ch8.cqrs.service.Account] = Gosub(Suspend(Credited(a-123,1000,2017-10-29T20:13:03.915+05:30)),<function1>) | |
scala> RepositoryBackedAccountInterpreter(res4) | |
res5: scalaz.concurrent.Task[frdomain.ch8.cqrs.service.Account] = scalaz.concurrent.Task@28d1fb05 | |
scala> res5.unsafePerformSync | |
res6: frdomain.ch8.cqrs.service.Account = Account(a-124,john j,2017-10-29T20:22:56.000+05:30,None,Balance(1200)) | |
scala> eventLog.events("a-123") | |
res7: scalaz.\/[frdomain.ch8.cqrs.lib.Common.Error,List[frdomain.ch8.cqrs.lib.Event[_]]] = \/-(List(Credited(a-123,1000,2017-10-29T20:13:03.000+05:30), Debited(a-123,23000,2017-10-29T20:13:03.000+05:30), Credited(a-123,30000,2017-10-29T20:13:03.000+05:30), Credited(a-123,10000,2017-10-29T20:13:03.000+05:30), Opened(a-123,debasish ghosh,Some(2017-10-29T20:13:03.000+05:30),2017-10-29T20:13:03.000+05:30))) | |
scala> eventLog.events("a-124") | |
res8: scalaz.\/[frdomain.ch8.cqrs.lib.Common.Error,List[frdomain.ch8.cqrs.lib.Event[_]]] = \/-(List(Credited(a-124,1200,2017-10-29T20:13:03.000+05:30), Opened(a-124,john j,Some(2017-10-29T20:22:56.000+05:30),2017-10-29T20:13:03.000+05:30))) | |
scala> import AccountSnapshot._ | |
import AccountSnapshot._ | |
scala> res7 |+| res8 | |
res9: scalaz.\/[frdomain.ch8.cqrs.lib.Common.Error,List[frdomain.ch8.cqrs.lib.Event[_]]] = \/-(List(Credited(a-123,1000,2017-10-29T20:13:03.000+05:30), Debited(a-123,23000,2017-10-29T20:13:03.000+05:30), Credited(a-123,30000,2017-10-29T20:13:03.000+05:30), Credited(a-123,10000,2017-10-29T20:13:03.000+05:30), Opened(a-123,debasish ghosh,Some(2017-10-29T20:13:03.000+05:30),2017-10-29T20:13:03.000+05:30), Credited(a-124,1200,2017-10-29T20:13:03.000+05:30), Opened(a-124,john j,Some(2017-10-29T20:22:56.000+05:30),2017-10-29T20:13:03.000+05:30))) | |
scala> res7 map snapshot | |
res10: scalaz.\/[frdomain.ch8.cqrs.lib.Common.Error,scalaz.\/[String,Map[String,frdomain.ch8.cqrs.service.Account]]] = \/-(\/-(Map(a-123 -> Account(a-123,debasish ghosh,2017-10-29T20:13:03.000+05:30,None,Balance(18000))))) | |
scala> eventLog.allEvents | |
res11: scalaz.\/[frdomain.ch8.cqrs.lib.Common.Error,List[frdomain.ch8.cqrs.lib.Event[_]]] = \/-(List(Credited(a-123,1000,2017-10-29T20:13:03.000+05:30), Debited(a-123,23000,2017-10-29T20:13:03.000+05:30), Credited(a-123,30000,2017-10-29T20:13:03.000+05:30), Credited(a-123,10000,2017-10-29T20:13:03.000+05:30), Opened(a-123,debasish ghosh,Some(2017-10-29T20:13:03.000+05:30),2017-10-29T20:13:03.000+05:30), Credited(a-124,1200,2017-10-29T20:13:03.000+05:30), Opened(a-124,john j,Some(2017-10-29T20:22:56.000+05:30),2017-10-29T20:13:03.000+05:30))) | |
scala> res9 map snapshot | |
res12: scalaz.\/[frdomain.ch8.cqrs.lib.Common.Error,scalaz.\/[String,Map[String,frdomain.ch8.cqrs.service.Account]]] = \/-(\/-(Map(a-124 -> Account(a-124,john j,2017-10-29T20:22:56.000+05:30,None,Balance(1200)), a-123 -> Account(a-123,debasish ghosh,2017-10-29T20:13:03.000+05:30,None,Balance(18000))))) | |
scala> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I have same outcome (my res[n] indices are a bit different, i.e. lower, as it seems you may have removed some REPL instructions between lines 22 and 35)