Skip to content

Commit

Permalink
Fixes #120 - Fixing type mismatch
Browse files Browse the repository at this point in the history
  • Loading branch information
TebaleloS committed Apr 2, 2024
1 parent c5c5a28 commit e6e48c9
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,10 @@ import play.api.libs.json.Json
import za.co.absa.atum.model.dto.{AdditionalDataDTO, PartitioningSubmitDTO}
import za.co.absa.atum.server.api.database.PostgresDatabaseProvider
import za.co.absa.atum.server.api.database.runs.Runs
import za.co.absa.atum.server.api.exception.DatabaseError
import za.co.absa.atum.server.model.PartitioningForDB
import za.co.absa.fadb.DBSchema
import za.co.absa.fadb.doobie.DoobieFunction.DoobieMultipleResultFunction
import za.co.absa.fadb.doobie.DoobieEngine
import za.co.absa.fadb.status.handling.implementations.StandardStatusHandling
import zio.interop.catz.asyncInstance
import zio.{Task, URLayer, ZIO, ZLayer}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,16 @@ import za.co.absa.atum.server.model.PartitioningForDB
import za.co.absa.fadb.DBSchema
import za.co.absa.fadb.doobie.DoobieEngine
import za.co.absa.fadb.doobie.DoobieFunction.DoobieMultipleResultFunction
import za.co.absa.fadb.status.handling.implementations.StandardStatusHandling
import za.co.absa.atum.server.api.database.PostgresDatabaseProvider
import za.co.absa.atum.server.api.database.runs.Runs
import zio._
import zio.interop.catz._

class GetPartitioningMeasures (implicit schema: DBSchema, dbEngine: DoobieEngine[Task])
extends DoobieMultipleResultFunction[PartitioningSubmitDTO, Seq[MeasureDTO], Task]
extends DoobieMultipleResultFunction[PartitioningSubmitDTO, MeasureDTO, Task]
{

override def sql(values: PartitioningSubmitDTO)(implicit read: Read[Seq[MeasureDTO]]): Fragment = {
override def sql(values: PartitioningSubmitDTO)(implicit read: Read[MeasureDTO]): Fragment = {
val partitioning = PartitioningForDB.fromSeqPartitionDTO(values.partitioning)
val partitioningJsonString = Json.toJson(partitioning).toString

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
package za.co.absa.atum.server.api.repository

import za.co.absa.atum.model.dto.{AdditionalDataDTO, AdditionalDataSubmitDTO, MeasureDTO, PartitioningSubmitDTO}
import za.co.absa.atum.server.api.database.runs.functions.{CreateOrUpdateAdditionalData, CreatePartitioningIfNotExists, GetPartitioningAdditionalData, GetPartitioningMeasures}
import za.co.absa.atum.server.api.database.runs.functions.{
CreateOrUpdateAdditionalData, CreatePartitioningIfNotExists,
GetPartitioningAdditionalData, GetPartitioningMeasures}
import za.co.absa.atum.server.api.exception.DatabaseError
import za.co.absa.fadb.exceptions.StatusException
import zio._
Expand All @@ -44,16 +46,19 @@ class PartitioningRepositoryImpl(
override def getPartitioningMeasures(partitioning: PartitioningSubmitDTO):
IO[DatabaseError, Seq[MeasureDTO]] = {
getPartitioningMeasuresFn(partitioning)
.mapError(err => DatabaseError(err.getMessage))
}

override def getPartitioningAdditionalData(partitioning: PartitioningSubmitDTO):
IO[DatabaseError, Seq[AdditionalDataDTO]] = {
getPartitioningAdditionalDataFn(partitioning)
.mapError(err => DatabaseError(err.getMessage))
}
}

object PartitioningRepositoryImpl {
val layer: URLayer[CreatePartitioningIfNotExists with GetPartitioningMeasures with GetPartitioningAdditionalData with CreateOrUpdateAdditionalData, PartitioningRepository] = ZLayer {
val layer: URLayer[CreatePartitioningIfNotExists with GetPartitioningMeasures with
GetPartitioningAdditionalData with CreateOrUpdateAdditionalData, PartitioningRepository] = ZLayer {
for {
createPartitioningIfNotExists <- ZIO.service[CreatePartitioningIfNotExists]
getPartitioningMeasures <- ZIO.service[GetPartitioningMeasures]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,20 +66,19 @@ class PartitioningServiceImpl(partitioningRepository: PartitioningRepository)
.mapError(error => ServiceError(error.message))

additionalData <- getPartitioningAdditionalData(partitioning)
.fold(_ => Seq.empty[AdditionalDataDTO], value => value)
.map(_.headOption)
.flatMap {
case Left(_) => ZIO.succeed(Map[String, Option[String]])
case Right(value) => ZIO.succeed(value)
case Some(data) => ZIO.succeed(data)
case None => ZIO.fail(ServiceError("No additional data found"))
}
.mapError(error => ServiceError(error.message))

measures <- getPartitioningMeasures(partitioning)
.flatMap {
case Left(_) => ZIO.succeed(Seq.empty[MeasureDTO])
case Right(value) => ZIO.succeed(value.toSet)
}
.mapError(error => ServiceError(error.message))
} yield AtumContextDTO(partitioning.partitioning, measures, additionalData)
.fold(_ => Seq.empty[MeasureDTO], value => value)

} yield AtumContextDTO(partitioning.partitioning, measures.toSet, additionalData)
}

}

object PartitioningServiceImpl {
Expand Down

0 comments on commit e6e48c9

Please sign in to comment.