app/controllers/AuditController.scala (26 lines of code) (raw):
package controllers
import ai.snips.bsonmacros.DatabaseContext
import helpers.ZonedDateTimeEncoder
import javax.inject.{Inject, Singleton}
import models.{AuditEventEncoder, AuditRecordDAO}
import play.api.libs.circe.Circe
import play.api.mvc.{AbstractController, ControllerComponents}
import io.circe.generic.auto._
import io.circe.syntax._
import org.slf4j.LoggerFactory
import responses.{GenericErrorResponse, ObjectListResponse}
import scala.concurrent.ExecutionContext
@Singleton
class AuditController @Inject() (auditRecordDAO: AuditRecordDAO, cc:ControllerComponents, dbContext:DatabaseContext)(implicit ec:ExecutionContext) extends AbstractController(cc)
with Circe with ZonedDateTimeEncoder with AuditEventEncoder {
private val logger = LoggerFactory.getLogger(getClass)
def getAll(limit:Option[Int]) = Action.async {
auditRecordDAO.scan(limit.getOrElse(100)).map(records=>
Ok(ObjectListResponse("ok",records,None).asJson)
).recover({
case err:Throwable=>
logger.error("Could not retrieve audit records: ", err)
InternalServerError(GenericErrorResponse("db_error", err.toString).asJson)
})
}
}