-
Notifications
You must be signed in to change notification settings - Fork 640
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
To-om
committed
Dec 2, 2016
1 parent
584d6d4
commit 7d56bb1
Showing
3 changed files
with
128 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package controllers | ||
|
||
import javax.inject.{ Inject, Singleton } | ||
|
||
import scala.concurrent.ExecutionContext | ||
|
||
import play.api.http.Status | ||
import play.api.mvc.Controller | ||
|
||
import org.elastic4play.Timed | ||
import org.elastic4play.controllers.{ Authenticated, FieldsBodyParser, Renderer } | ||
import org.elastic4play.models.JsonFormat.baseModelEntityWrites | ||
import org.elastic4play.services.{ QueryDSL, QueryDef, Role } | ||
import org.elastic4play.services.AuxSrv | ||
import org.elastic4play.services.JsonFormat.queryReads | ||
|
||
import services.ReportTemplateSrv | ||
|
||
@Singleton | ||
class ReportTemplateCtrl @Inject() ( | ||
reportTemplateSrv: ReportTemplateSrv, | ||
auxSrv: AuxSrv, | ||
authenticated: Authenticated, | ||
renderer: Renderer, | ||
fieldsBodyParser: FieldsBodyParser, | ||
implicit val ec: ExecutionContext) extends Controller with Status { | ||
|
||
@Timed | ||
def create = authenticated(Role.admin).async(fieldsBodyParser) { implicit request ⇒ | ||
reportTemplateSrv.create(request.body) | ||
.map(reportTemplate ⇒ renderer.toOutput(CREATED, reportTemplate)) | ||
} | ||
|
||
@Timed | ||
def get(id: String) = authenticated(Role.read).async { implicit request ⇒ | ||
reportTemplateSrv.get(id) | ||
.map(reportTemplate ⇒ renderer.toOutput(OK, reportTemplate)) | ||
} | ||
|
||
@Timed | ||
def update(id: String) = authenticated(Role.admin).async(fieldsBodyParser) { implicit request ⇒ | ||
reportTemplateSrv.update(id, request.body) | ||
.map(reportTemplate ⇒ renderer.toOutput(OK, reportTemplate)) | ||
} | ||
|
||
@Timed | ||
def delete(id: String) = authenticated(Role.admin).async { implicit request ⇒ | ||
reportTemplateSrv.delete(id) | ||
.map(_ ⇒ NoContent) | ||
} | ||
|
||
@Timed | ||
def find = authenticated(Role.read).async(fieldsBodyParser) { implicit request ⇒ | ||
val query = request.body.getValue("query").fold[QueryDef](QueryDSL.any)(_.as[QueryDef]) | ||
val range = request.body.getString("range") | ||
val sort = request.body.getStrings("sort").getOrElse(Nil) | ||
val nparent = request.body.getLong("nparent").getOrElse(0L).toInt | ||
val withStats = request.body.getBoolean("nstats").getOrElse(false) | ||
|
||
val (reportTemplates, total) = reportTemplateSrv.find(query, range, sort) | ||
val reportTemplatesWithStats = auxSrv(reportTemplates, nparent, withStats) | ||
renderer.toOutput(OK, reportTemplatesWithStats, total) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package services | ||
|
||
import javax.inject.{ Inject, Singleton } | ||
|
||
import scala.concurrent.{ ExecutionContext, Future } | ||
import scala.util.Try | ||
|
||
import akka.NotUsed | ||
import akka.stream.scaladsl.Source | ||
|
||
import play.api.Logger | ||
import play.api.libs.json.JsObject | ||
|
||
import org.elastic4play.controllers.Fields | ||
import org.elastic4play.services.{ Agg, AuthContext, CreateSrv, DeleteSrv, FindSrv, GetSrv, QueryDef, UpdateSrv } | ||
|
||
import models.{ ReportTemplate, ReportTemplateModel } | ||
|
||
@Singleton | ||
class ReportTemplateSrv @Inject() ( | ||
reportTemplateModel: ReportTemplateModel, | ||
createSrv: CreateSrv, | ||
artifactSrv: ArtifactSrv, | ||
getSrv: GetSrv, | ||
updateSrv: UpdateSrv, | ||
deleteSrv: DeleteSrv, | ||
findSrv: FindSrv, | ||
implicit val ec: ExecutionContext) { | ||
|
||
lazy val log = Logger(getClass) | ||
|
||
def create(fields: Fields)(implicit authContext: AuthContext): Future[ReportTemplate] = { | ||
createSrv[ReportTemplateModel, ReportTemplate](reportTemplateModel, fields) | ||
} | ||
|
||
def get(id: String): Future[ReportTemplate] = | ||
getSrv[ReportTemplateModel, ReportTemplate](reportTemplateModel, id) | ||
|
||
def update(id: String, fields: Fields)(implicit authContext: AuthContext): Future[ReportTemplate] = | ||
updateSrv[ReportTemplateModel, ReportTemplate](reportTemplateModel, id, fields) | ||
|
||
def bulkUpdate(ids: Seq[String], fields: Fields)(implicit authContext: AuthContext): Future[Seq[Try[ReportTemplate]]] = { | ||
updateSrv[ReportTemplateModel, ReportTemplate](reportTemplateModel, ids, fields) | ||
} | ||
|
||
def delete(id: String)(implicit Context: AuthContext): Future[ReportTemplate] = | ||
deleteSrv[ReportTemplateModel, ReportTemplate](reportTemplateModel, id) | ||
|
||
def find(queryDef: QueryDef, range: Option[String], sortBy: Seq[String]): (Source[ReportTemplate, NotUsed], Future[Long]) = { | ||
findSrv[ReportTemplateModel, ReportTemplate](reportTemplateModel, queryDef, range, sortBy) | ||
} | ||
|
||
def stats(queryDef: QueryDef, aggs: Seq[Agg]): Future[JsObject] = findSrv(reportTemplateModel, queryDef, aggs: _*) | ||
|
||
def getStats(id: String): Future[JsObject] = { | ||
Future.successful(JsObject(Nil)) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters