diff --git a/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/Errors.scala b/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/Errors.scala index cebcc8a..2ea0f80 100644 --- a/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/Errors.scala +++ b/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/Errors.scala @@ -2,4 +2,6 @@ package it.pagopa.interop.metricsreportgenerator.util object Errors { final case object InterfacePathNotFound extends Exception(s"Interface path not found in active descriptor") + final case class ChecksumNotFound(descriptorId: String) + extends Exception(s"Interface checksum not found in active descriptor $descriptorId") } diff --git a/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/Jobs.scala b/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/Jobs.scala index b7d1a93..90d60bd 100644 --- a/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/Jobs.scala +++ b/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/Jobs.scala @@ -54,7 +54,7 @@ class Jobs(config: Configuration, readModel: ReadModelService)(implicit ReadModelQueries .getAllDescriptors(config.collections, readModel) .map(_.filter(_.isActive).toList) - .map(_.map(_.toMetric)) + .flatMap(xs => Future.traverse(xs)(_.toMetric)) .map(asCsv) .map(_.mkString("\n")) } diff --git a/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/ReadModelQueries.scala b/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/ReadModelQueries.scala index 6ab391c..9a9f450 100644 --- a/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/ReadModelQueries.scala +++ b/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/ReadModelQueries.scala @@ -142,7 +142,7 @@ object ReadModelQueries { include("name", "createdAt", "producerId"), computed("descriptorId", "$descriptors.id"), computed("state", "$descriptors.state"), - computed("interfacePath", "$descriptors.interfacePath"), + computed("checksum", "$descriptors.checksum"), computed("producer", "$producerTenant.data.name") ) ) diff --git a/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/models.scala b/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/models.scala index 0a727de..2346b93 100644 --- a/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/models.scala +++ b/metrics-report-generator/src/main/scala/it/pagopa/interop/metricsreportgenerator/util/models.scala @@ -1,13 +1,14 @@ package it.pagopa.interop.metricsreportgenerator.util.models -import java.time.LocalDate +import cats.syntax.all._ import it.pagopa.interop.commons.utils.errors.GenericComponentErrors.GenericError -import scala.util._ +import it.pagopa.interop.metricsreportgenerator.util.Errors.ChecksumNotFound import spray.json.DefaultJsonProtocol._ import spray.json._ -import cats.syntax.all._ -import java.time.Instant -import java.time.ZoneId + +import java.time.{Instant, LocalDate, ZoneId} +import scala.concurrent.Future +import scala.util._ final case class Agreement( activationDate: Option[String], @@ -36,12 +37,15 @@ final case class Descriptor( producer: String, descriptorId: String, state: String, - checksum: String + checksum: Option[String] ) { def isActive: Boolean = state == "Suspended" || state == "Published" || state == "Deprecated" - def toMetric: MetricDescriptor = - MetricDescriptor(name, createdAt, producerId, producer, descriptorId, state, checksum) + def toMetric: Future[MetricDescriptor] = checksum + .fold[Future[MetricDescriptor]](Future.failed(ChecksumNotFound(descriptorId)))(chs => + Future.successful(MetricDescriptor(name, createdAt, producerId, producer, descriptorId, state, chs)) + ) + } object Descriptor {