Skip to content

Commit

Permalink
feat: find by id impl
Browse files Browse the repository at this point in the history
  • Loading branch information
patlo-iog committed May 7, 2024
1 parent 8e79e40 commit dbbb3ac
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,8 @@ object MainApp extends ZIOAppDefault {
RepoModule.polluxContextAwareTransactorLayer ++ RepoModule.polluxTransactorLayer >>> JdbcCredentialSchemaRepository.layer,
RepoModule.polluxContextAwareTransactorLayer ++ RepoModule.polluxTransactorLayer >>> JdbcCredentialDefinitionRepository.layer,
RepoModule.polluxContextAwareTransactorLayer ++ RepoModule.polluxTransactorLayer >>> JdbcPresentationRepository.layer,
RepoModule.polluxContextAwareTransactorLayer ++ RepoModule.polluxTransactorLayer >>> JdbcOIDC4VCIssuerMetadataRepository.layer,
RepoModule.polluxContextAwareTransactorLayer >>> JdbcVerificationPolicyRepository.layer,
RepoModule.polluxContextAwareTransactorLayer >>> JdbcOIDC4VCIssuerMetadataRepository.layer,
// oidc
CredentialIssuerControllerImpl.layer,
InMemoryIssuanceSessionService.layer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import java.time.Instant
import java.util.UUID

trait OIDC4VCIssuerMetadataRepository {
def findIssuer(issuerId: UUID): UIO[Option[CredentialIssuer]]
def findIssuerById(issuerId: UUID): UIO[Option[CredentialIssuer]]
def createIssuer(issuer: CredentialIssuer): URIO[WalletAccessContext, Unit]
def findWalletIssuers: URIO[WalletAccessContext, Seq[CredentialIssuer]]
def updateIssuer(issuerId: UUID, authorizationServer: Option[URL] = None): URIO[WalletAccessContext, CredentialIssuer]
Expand All @@ -26,7 +26,7 @@ class InMemoryOIDC4VCIssuerMetadataRepository(
credentialConfigStore: Ref[Map[(WalletId, UUID), Seq[CredentialConfiguration]]]
) extends OIDC4VCIssuerMetadataRepository {

override def findIssuer(issuerId: UUID): UIO[Option[CredentialIssuer]] =
override def findIssuerById(issuerId: UUID): UIO[Option[CredentialIssuer]] =
issuerStore.get.map(m => m.values.flatten.find(_.id == issuerId))

override def createIssuer(issuer: CredentialIssuer): URIO[WalletAccessContext, Unit] =
Expand All @@ -46,7 +46,7 @@ class InMemoryOIDC4VCIssuerMetadataRepository(
authorizationServer: Option[URL]
): URIO[WalletAccessContext, CredentialIssuer] =
for {
issuer <- findIssuer(issuerId)
issuer <- findIssuerById(issuerId)
.someOrElseZIO(ZIO.dieMessage("Update credential issuer fail. The issuer does not exist"))
updatedAuthServerIssuer = authorizationServer
.fold(issuer)(url => issuer.copy(authorizationServer = url))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ class OIDC4VCIssuerMetadataServiceImpl(repository: OIDC4VCIssuerMetadataReposito

override def getCredentialIssuer(issuerId: UUID): IO[IssuerIdNotFound, CredentialIssuer] =
repository
.findIssuer(issuerId)
.findIssuerById(issuerId)
.someOrFail(IssuerIdNotFound(issuerId))

override def updateCredentialIssuer(
Expand Down Expand Up @@ -139,7 +139,7 @@ class OIDC4VCIssuerMetadataServiceImpl(repository: OIDC4VCIssuerMetadataReposito
issuerId: UUID
): IO[IssuerIdNotFound, Seq[CredentialConfiguration]] =
repository
.findIssuer(issuerId)
.findIssuerById(issuerId)
.someOrFail(IssuerIdNotFound(issuerId))
.flatMap(_ => repository.findAllCredentialConfigurations(issuerId))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,32 @@ import org.hyperledger.identus.shared.db.ContextAwareTask
import org.hyperledger.identus.shared.db.Implicits.*
import org.hyperledger.identus.shared.models.WalletAccessContext
import zio.*
import zio.interop.catz.*

import java.net.URL
import java.util.UUID

// TODO: implement all members
class JdbcOIDC4VCIssuerMetadataRepository(xa: Transactor[ContextAwareTask]) extends OIDC4VCIssuerMetadataRepository {
class JdbcOIDC4VCIssuerMetadataRepository(xa: Transactor[ContextAwareTask], xb: Transactor[Task])
extends OIDC4VCIssuerMetadataRepository {

override def findAllCredentialConfigurations(issuerId: UUID): UIO[Seq[CredentialConfiguration]] = ???
override def findIssuerById(issuerId: UUID): UIO[Option[CredentialIssuer]] = {
val cxnIO = sql"""
|SELECT
| id,
| authorization_server,
| created_at,
| updated_at
|FROM public.issuer_metadata
|WHERE id = $issuerId
""".stripMargin
.query[CredentialIssuer]
.option

cxnIO
.transact(xb)
.orDie
}

override def findWalletIssuers: URIO[WalletAccessContext, Seq[CredentialIssuer]] = {
val cxnIO = sql"""
Expand Down Expand Up @@ -59,23 +77,11 @@ class JdbcOIDC4VCIssuerMetadataRepository(xa: Transactor[ContextAwareTask]) exte
.ensureOneAffectedRowOrDie
}

override def deleteCredentialConfiguration(
issuerId: UUID,
configurationId: String
): URIO[WalletAccessContext, Unit] = ???

override def findIssuer(issuerId: UUID): UIO[Option[CredentialIssuer]] = ???

override def updateIssuer(
issuerId: UUID,
authorizationServer: Option[URL]
): URIO[WalletAccessContext, CredentialIssuer] = ???

override def createCredentialConfiguration(
issuerId: UUID,
config: CredentialConfiguration
): URIO[WalletAccessContext, Unit] = ???

override def deleteIssuer(issuerId: UUID): URIO[WalletAccessContext, Unit] = {
val cxnIO = sql"""
| DELETE FROM public.issuer_metadata
Expand All @@ -87,9 +93,21 @@ class JdbcOIDC4VCIssuerMetadataRepository(xa: Transactor[ContextAwareTask]) exte
.ensureOneAffectedRowOrDie
}

override def findAllCredentialConfigurations(issuerId: UUID): UIO[Seq[CredentialConfiguration]] = ???

override def createCredentialConfiguration(
issuerId: UUID,
config: CredentialConfiguration
): URIO[WalletAccessContext, Unit] = ???

override def deleteCredentialConfiguration(
issuerId: UUID,
configurationId: String
): URIO[WalletAccessContext, Unit] = ???

}

object JdbcOIDC4VCIssuerMetadataRepository {
val layer: URLayer[Transactor[ContextAwareTask], OIDC4VCIssuerMetadataRepository] =
ZLayer.fromFunction(new JdbcOIDC4VCIssuerMetadataRepository(_))
val layer: URLayer[Transactor[ContextAwareTask] & Transactor[Task], OIDC4VCIssuerMetadataRepository] =
ZLayer.fromFunction(new JdbcOIDC4VCIssuerMetadataRepository(_, _))
}

0 comments on commit dbbb3ac

Please sign in to comment.