1
1
package io .iohk .atala .prism .node
2
2
3
+ import cats .effect .ExitCode
4
+ import cats .effect .IO
5
+ import cats .effect .IOApp
6
+ import cats .effect .Resource
3
7
import cats .effect .unsafe .IORuntime
4
- import cats .effect .{ExitCode , IO , IOApp , Resource }
5
8
import cats .implicits .toFunctorOps
6
- import com .typesafe .config .{Config , ConfigFactory }
9
+ import com .typesafe .config .Config
10
+ import com .typesafe .config .ConfigFactory
7
11
import doobie .hikari .HikariTransactor
8
- import io .grpc .{Server , ServerBuilder }
12
+ import io .grpc .Server
13
+ import io .grpc .ServerBuilder
14
+ import io .iohk .atala .prism .node .cardano .CardanoClient
9
15
import io .iohk .atala .prism .node .logging .TraceId
10
16
import io .iohk .atala .prism .node .logging .TraceId .IOWithTraceIdContext
17
+ import io .iohk .atala .prism .node .metrics .NodeReporter
11
18
import io .iohk .atala .prism .node .metrics .UptimeReporter
12
19
import io .iohk .atala .prism .node .models .DidSuffix
13
- import io .iohk .atala .prism .node .cardano .CardanoClient
14
- import io .iohk .atala .prism .node .metrics .NodeReporter
15
20
import io .iohk .atala .prism .node .operations .ApplyOperationConfig
21
+ import io .iohk .atala .prism .node .repositories .SchemaMigrations
22
+ import io .iohk .atala .prism .node .repositories .TransactorFactory
16
23
import io .iohk .atala .prism .node .repositories ._
17
24
import io .iohk .atala .prism .node .services .CardanoLedgerService .CardanoBlockHandler
18
25
import io .iohk .atala .prism .node .services ._
19
- import io .iohk .atala .prism .node .services .models .AtalaObjectNotification
20
- import io .iohk .atala .prism .protos .node_api ._
21
- import io .iohk .atala .prism .node .repositories .{SchemaMigrations , TransactorFactory }
26
+ import io .iohk .atala .prism .node .services .models .{AtalaObjectBulkNotificationHandler , AtalaObjectNotification }
22
27
import io .iohk .atala .prism .node .utils .IOUtils ._
28
+ import io .iohk .atala .prism .protos .node_api ._
23
29
import kamon .Kamon
24
30
import kamon .module .Module
25
31
import org .slf4j .LoggerFactory
@@ -84,12 +90,14 @@ class NodeApp(executionContext: ExecutionContext) { self =>
84
90
)
85
91
onCardanoBlock = onCardanoBlockOp(protocolVersionRepository)
86
92
onAtalaObject = onAtalaObjectOp(objectManagementService)
93
+ onAtalaObjectBulk = onAtalaObjectBulkOp(objectManagementService)
87
94
keyValueService <- KeyValueService .resource(keyValuesRepository, logs)
88
95
ledger <- createLedger(
89
96
globalConfig,
90
97
keyValueService,
91
98
onCardanoBlock,
92
99
onAtalaObject,
100
+ onAtalaObjectBulk,
93
101
logs
94
102
)
95
103
didDataRepository <- DIDDataRepository .resource(liftedTransactor, logs)
@@ -145,6 +153,7 @@ class NodeApp(executionContext: ExecutionContext) { self =>
145
153
globalConfig : Config ,
146
154
onCardanoBlock : CardanoBlockHandler [IOWithTraceIdContext ],
147
155
onAtalaObject : AtalaObjectNotification => IOWithTraceIdContext [Unit ],
156
+ onAtalaObjectBulk : AtalaObjectBulkNotificationHandler [IOWithTraceIdContext ],
148
157
logs : Logs [IO , IOWithTraceIdContext ]
149
158
): Resource [IO , UnderlyingLedger [IOWithTraceIdContext ]] = {
150
159
val config = NodeConfig .cardanoConfig(globalConfig.getConfig(" cardano" ))
@@ -159,6 +168,7 @@ class NodeApp(executionContext: ExecutionContext) { self =>
159
168
keyValueService,
160
169
onCardanoBlock,
161
170
onAtalaObject,
171
+ onAtalaObjectBulk,
162
172
logs
163
173
)
164
174
}
@@ -193,11 +203,18 @@ class NodeApp(executionContext: ExecutionContext) { self =>
193
203
.void
194
204
}
195
205
206
+ private def onAtalaObjectBulkOp (
207
+ objectManagementService : ObjectManagementService [IOWithTraceIdContext ]
208
+ ): AtalaObjectBulkNotificationHandler [IOWithTraceIdContext ] = notifications => {
209
+ objectManagementService.saveObjects(notifications).void
210
+ }
211
+
196
212
private def createLedger (
197
213
config : Config ,
198
214
keyValueService : KeyValueService [IOWithTraceIdContext ],
199
215
onCardanoBlock : CardanoBlockHandler [IOWithTraceIdContext ],
200
216
onAtalaObject : AtalaObjectNotification => IOWithTraceIdContext [Unit ],
217
+ onAtalaObjectBulk : AtalaObjectBulkNotificationHandler [IOWithTraceIdContext ],
201
218
logs : Logs [IO , IOWithTraceIdContext ]
202
219
): Resource [IO , UnderlyingLedger [IOWithTraceIdContext ]] =
203
220
config.getString(" ledger" ) match {
@@ -207,6 +224,7 @@ class NodeApp(executionContext: ExecutionContext) { self =>
207
224
config,
208
225
onCardanoBlock,
209
226
onAtalaObject,
227
+ onAtalaObjectBulk,
210
228
logs
211
229
)
212
230
case " in-memory" =>
0 commit comments