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

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

10 Jul 2023 11:26AM UTC coverage: 28.366% (+0.3%) from 28.076%
5507500681

Pull #575

bvoiturier
chore(prism-agent): fixing last PR comments
Pull Request #575: feat(prism-agent): simple event mechanism using webhook

409 of 409 new or added lines in 17 files covered. (100.0%)

2758 of 9723 relevant lines covered (28.37%)

0.28 hits per line

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

12.5
/pollux/lib/core/src/main/scala/io/iohk/atala/pollux/core/service/CredentialSchemaServiceImpl.scala
1
package io.iohk.atala.pollux.core.service
2
import io.iohk.atala.pollux.core.model.error.CredentialSchemaError
3
import io.iohk.atala.pollux.core.model.schema.CredentialSchema
4
import io.iohk.atala.pollux.core.model.schema.CredentialSchema.FilteredEntries
5
import io.iohk.atala.pollux.core.repository.CredentialSchemaRepository
6
import io.iohk.atala.pollux.core.repository.Repository.SearchQuery
7
import io.iohk.atala.pollux.core.service.CredentialSchemaService.Error.*
8
import zio.ZIO.{fail, getOrFailWith, succeed}
9
import zio.{Task, URLayer, ZLayer}
10

11
import java.util.UUID
12

13
class CredentialSchemaServiceImpl(
14
    credentialSchemaRepository: CredentialSchemaRepository[Task]
15
) extends CredentialSchemaService {
1✔
16
  override def create(in: CredentialSchema.Input): Result[CredentialSchema] = {
×
17
    for {
×
18
      credentialSchema <- CredentialSchema.make(in)
×
19
      _ <- CredentialSchema.validateCredentialSchema(credentialSchema)
×
20
      createdCredentialSchema <- credentialSchemaRepository
×
21
        .create(credentialSchema)
22
    } yield createdCredentialSchema
23
  }.mapError {
×
24
    case e: CredentialSchemaError => CredentialSchemaValidationError(e)
×
25
    case t: Throwable             => RepositoryError(t)
26
  }
27

1✔
28
  override def getByGUID(guid: UUID): Result[CredentialSchema] = {
×
29
    credentialSchemaRepository
×
30
      .getByGuid(guid)
31
      .mapError[CredentialSchemaService.Error](t => RepositoryError(t))
32
      .flatMap(
1✔
33
        getOrFailWith(NotFoundError.byGuid(guid))(_)
34
      )
35
  }
36

×
37
  def getBy(
38
      author: String,
39
      id: UUID,
40
      version: String
41
  ): Result[CredentialSchema] = {
×
42
    getByGUID(CredentialSchema.makeGUID(author, id, version))
43
  }
44

×
45
  override def update(
46
      id: UUID,
47
      in: CredentialSchema.Input
48
  ): Result[CredentialSchema] = {
×
49
    for {
×
50
      cs <- CredentialSchema.make(id, in)
×
51
      _ <- CredentialSchema.validateCredentialSchema(cs).mapError(CredentialSchemaValidationError.apply)
×
52
      existingVersions <- credentialSchemaRepository
×
53
        .getAllVersions(id, in.author)
54
        .mapError[CredentialSchemaService.Error](RepositoryError.apply)
×
55
      _ <- existingVersions.headOption match {
×
56
        case None =>
×
57
          fail(NotFoundError.byId(id))
×
58
        case _ =>
×
59
          succeed(cs)
60
      }
×
61
      _ <- existingVersions.find(_ > in.version) match {
×
62
        case Some(higherVersion) =>
×
63
          fail(
64
            UpdateError(
65
              id,
66
              in.version,
67
              in.author,
×
68
              s"Higher version is found: $higherVersion"
69
            )
70
          )
×
71
        case None =>
×
72
          succeed(cs)
73
      }
×
74
      _ <- existingVersions.find(_ == in.version) match {
×
75
        case Some(existingVersion) =>
×
76
          fail(
77
            UpdateError(
78
              id,
79
              in.version,
80
              in.author,
×
81
              s"The version already exists: $existingVersion"
82
            )
83
          )
×
84
        case None => succeed(cs)
85
      }
×
86
      updated <- credentialSchemaRepository
×
87
        .create(cs)
88
        .mapError[CredentialSchemaService.Error](RepositoryError.apply)
89
    } yield updated
90
  }
×
91
  override def delete(guid: UUID): Result[CredentialSchema] = {
×
92
    for {
×
93
      deleted_row_opt <- credentialSchemaRepository
×
94
        .delete(guid)
95
        .mapError(RepositoryError.apply)
×
96
      deleted_row <- getOrFailWith(NotFoundError.byGuid(guid))(deleted_row_opt)
97
    } yield deleted_row
98
  }
99

1✔
100
  override def lookup(
101
      filter: CredentialSchema.Filter,
102
      skip: Int,
103
      limit: Int
104
  ): Result[CredentialSchema.FilteredEntries] = {
×
105
    credentialSchemaRepository
×
106
      .search(SearchQuery(filter, skip, limit))
107
      .mapError(t => RepositoryError(t))
1✔
108
      .map(sr => FilteredEntries(sr.entries, sr.count.toInt, sr.totalCount.toInt))
109
  }
110
}
111

112
object CredentialSchemaServiceImpl {
113
  val layer: URLayer[CredentialSchemaRepository[Task], CredentialSchemaService] =
1✔
114
    ZLayer.fromFunction(CredentialSchemaServiceImpl(_))
115
}
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