Skip to content

Commit 0ac2ba7

Browse files
committed
Create filings after creating institutions
1 parent 1bdec46 commit 0ac2ba7

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

api/src/main/scala/hmda/api/tcp/admin/InstitutionAdminTcpApi.scala

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ import akka.stream.scaladsl.{ Flow, Tcp }
88
import akka.util.{ ByteString, Timeout }
99
import hmda.api.tcp.TcpApi
1010
import hmda.api.util.FlowUtils
11+
import hmda.model.fi.Filing
1112
import hmda.model.institution.Institution
1213
import hmda.parser.fi.InstitutionParser
13-
import hmda.persistence.institutions.InstitutionPersistence
14+
import hmda.persistence.HmdaSupervisor.FindFilings
15+
import hmda.persistence.institutions.FilingPersistence.CreateFiling
16+
import hmda.persistence.institutions.{ FilingPersistence, InstitutionPersistence }
1417
import hmda.persistence.institutions.InstitutionPersistence.CreateInstitution
1518
import hmda.persistence.model.HmdaSupervisorActor.FindActorByName
19+
1620
import scala.concurrent.{ ExecutionContext, Future }
1721
import scala.concurrent.duration._
1822

@@ -35,15 +39,14 @@ class InstitutionAdminTcpApi(supervisor: ActorRef) extends TcpApi with FlowUtils
3539
implicit val timeout = Timeout(duration)
3640
val buffer = config.getInt("hmda.panel.tcp.parallelism")
3741

38-
val fInstitutionsActor = (supervisor ? FindActorByName(InstitutionPersistence.name)).mapTo[ActorRef]
39-
4042
val tcpHandler: Flow[ByteString, ByteString, NotUsed] =
4143
Flow[ByteString]
4244
.via(framing)
4345
.drop(1)
4446
.via(byte2StringFlow)
4547
.map(x => InstitutionParser(x))
46-
.mapAsync(parallelism = buffer)(i => createInstitution(fInstitutionsActor, i))
48+
.mapAsync(parallelism = buffer)(i => createInstitution(i))
49+
.mapAsync(parallelism = buffer)(i => createFiling(i))
4750
.map(e => ByteString(e.toString))
4851

4952
override val tcp: Future[Tcp.ServerBinding] = Tcp().bindAndHandle(
@@ -54,11 +57,24 @@ class InstitutionAdminTcpApi(supervisor: ActorRef) extends TcpApi with FlowUtils
5457

5558
tcp pipeTo self
5659

57-
private def createInstitution(fActor: Future[ActorRef], i: Institution): Future[Institution] = {
60+
private def createInstitution(i: Institution): Future[Institution] = {
61+
val fInstitutionsActor = (supervisor ? FindActorByName(InstitutionPersistence.name)).mapTo[ActorRef]
5862
for {
59-
actor <- fActor
60-
i <- (actor ? CreateInstitution(i)).mapTo[Option[Institution]].map(i => i.getOrElse(Institution.empty))
63+
actor <- fInstitutionsActor
64+
i <- (actor ? CreateInstitution(i))
65+
.mapTo[Option[Institution]]
66+
.map(i => i.getOrElse(Institution.empty))
6167
} yield i
6268
}
6369

70+
private def createFiling(institution: Institution): Future[Filing] = {
71+
val fFilingPersistence = (supervisor ? FindFilings(FilingPersistence.name, institution.id)).mapTo[ActorRef]
72+
for {
73+
actor <- fFilingPersistence
74+
f <- (actor ? CreateFiling(Filing(institution.activityYear.toString, institution.id)))
75+
.mapTo[Option[Filing]]
76+
.map(x => x.getOrElse(Filing()))
77+
} yield f
78+
}
79+
6480
}

0 commit comments

Comments
 (0)