• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

input-output-hk / atala-prism-building-blocks / 8810790555

24 Apr 2024 03:59AM UTC coverage: 31.912% (+0.08%) from 31.837%
8810790555

push

web-flow
feat: Vc Verification Api (#975)

Signed-off-by: Bassam Riman <bassam.riman@iohk.io>
Signed-off-by: Benjamin Voiturier <benjamin.voiturier@iohk.io>
Co-authored-by: Benjamin Voiturier <benjamin.voiturier@iohk.io>

98 of 274 new or added lines in 15 files covered. (35.77%)

409 existing lines in 109 files now uncovered.

4625 of 14493 relevant lines covered (31.91%)

0.32 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

68.75
/shared/core/src/main/scala/io/iohk/atala/shared/db/ContextAwareTask.scala
1
package io.iohk.atala.shared.db
2

3
import doobie.*
4
import doobie.postgres.implicits.*
5
import doobie.syntax.ConnectionIOOps
6
import doobie.util.transactor.Transactor
7
import io.iohk.atala.shared.models.WalletAccessContext
8
import io.iohk.atala.shared.models.WalletId
9
import zio.*
10
import zio.interop.catz.*
11

12
import java.util.UUID
13

14
trait ContextAware
15
type ContextAwareTask[T] = Task[T] with ContextAware
16

17
object Implicits {
18

1✔
UNCOV
19
  given walletIdGet: Get[WalletId] = Get[UUID].map(WalletId.fromUUID)
×
20
  given walletIdPut: Put[WalletId] = Put[UUID].contramap(_.toUUID)
21

22
  private val WalletIdVariableName = "app.current_wallet_id"
23

24
  extension [A](ma: ConnectionIO[A]) {
1✔
25
    def transactWithoutContext(xa: Transactor[ContextAwareTask]): Task[A] = {
×
26
      ConnectionIOOps(ma).transact(xa.asInstanceOf[Transactor[Task]])
27
    }
28

1✔
29
    def transactWallet(xa: Transactor[ContextAwareTask]): RIO[WalletAccessContext, A] = {
1✔
30
      def walletCxnIO(ctx: WalletAccessContext) = {
1✔
UNCOV
31
        for {
×
32
          _ <- doobie.free.connection.createStatement.map { statement =>
×
33
            statement.execute(s"SET LOCAL $WalletIdVariableName TO '${ctx.walletId}'")
34
          }
1✔
35
          result <- ma
36
        } yield result
37
      }
38

1✔
39
      for {
×
40
        ctx <- ZIO.service[WalletAccessContext]
1✔
41
        result <- ConnectionIOOps(walletCxnIO(ctx)).transact(xa.asInstanceOf[Transactor[Task]])
42
      } yield result
43
    }
44

45
  }
46

47
  extension [Int](ma: RIO[WalletAccessContext, Int]) {
1✔
48
    def ensureOneAffectedRowOrDie: URIO[WalletAccessContext, Unit] = ma.flatMap {
1✔
49
      case 1     => ZIO.unit
1✔
50
      case count => ZIO.fail(RuntimeException(s"Unexpected affected row count: $count"))
51
    }.orDie
52
  }
53

54
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc