app/controllers/ChannelTestsAuditController.scala (30 lines of code) (raw):
package controllers
import com.gu.googleauth.AuthAction
import com.typesafe.scalalogging.LazyLogging
import io.circe.syntax.EncoderOps
import play.api.mvc.{AbstractController, Action, ActionBuilder, AnyContent, ControllerComponents, Result}
import services.DynamoChannelTestsAudit
import utils.Circe.noNulls
import zio.{IO, ZEnv, ZIO}
import scala.concurrent.{ExecutionContext, Future}
class ChannelTestsAuditController(
authAction: ActionBuilder[AuthAction.UserIdentityRequest, AnyContent],
components: ControllerComponents,
stage: String,
runtime: zio.Runtime[ZEnv],
dynamo: DynamoChannelTestsAudit
)(implicit ec: ExecutionContext) extends AbstractController(components) with LazyLogging {
private def run(f: => ZIO[ZEnv, Throwable, Result]): Future[Result] =
runtime.unsafeRunToFuture {
f.catchAll(error => {
logger.error(s"Returning InternalServerError to client: ${error.getMessage}", error)
IO.succeed(InternalServerError(error.getMessage))
})
}
def getAuditsForChannelTest(channel: String, testName: String): Action[AnyContent] = authAction.async { request =>
run {
dynamo.getAuditsForChannelTest(channel, testName)
.map(tests => Ok(noNulls(tests.asJson)))
}
}
}