diff options
author | Aleksandr <ognelisar@gmail.com> | 2017-12-06 15:05:54 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-06 15:05:54 +0700 |
commit | 51d5d1ddba83f539405c6d395933e1f8a456c871 (patch) | |
tree | 21cb0ee82567e72ba8314e19f896a62407932def /src/main/scala/xyz/driver/pdsuidomain/services/rest | |
parent | ed8db038b3b74e0089fe3415d4e3df5ceb882d86 (diff) | |
parent | 4d07f7cdb4df601398f982dd1df895304c554566 (diff) | |
download | rest-query-51d5d1ddba83f539405c6d395933e1f8a456c871.tar.gz rest-query-51d5d1ddba83f539405c6d395933e1f8a456c871.tar.bz2 rest-query-51d5d1ddba83f539405c6d395933e1f8a456c871.zip |
Merge pull request #72 from drivergroup/PDSUI-2396
PDSUI-2396 Fixed RestTrialService singleAction method
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services/rest')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialIssueService.scala | 103 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala | 2 |
2 files changed, 104 insertions, 1 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialIssueService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialIssueService.scala new file mode 100644 index 0000000..b14d35b --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialIssueService.scala @@ -0,0 +1,103 @@ +package xyz.driver.pdsuidomain.services.rest + +import akka.http.scaladsl.marshalling.Marshal +import akka.http.scaladsl.model._ +import akka.stream.Materializer +import spray.json.RootJsonReader +import xyz.driver.core.rest.{AuthorizedServiceRequestContext, ServiceTransport} +import xyz.driver.entities.users +import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting} +import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import xyz.driver.pdsuidomain.ListResponse +import xyz.driver.pdsuidomain.entities.{Trial, TrialIssue} +import xyz.driver.pdsuidomain.services.TrialIssueService + +import scala.concurrent.ExecutionContext + +class RestTrialIssueService(transport: ServiceTransport, baseUri: Uri) + (implicit + protected val materializer: Materializer, + protected val exec: ExecutionContext) + extends TrialIssueService with RestHelper{ + + import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ + import xyz.driver.pdsuidomain.formats.json.listresponse._ + import xyz.driver.pdsuidomain.formats.json.trialissue._ + import xyz.driver.pdsuidomain.services.TrialIssueService._ + + override def create(draft: TrialIssue) + (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = { + val trialId = draft.trialId + + implicit val jsonReader: RootJsonReader[TrialIssue] = trialIssueReader(trialId) + + for { + entity <- Marshal(draft).to[RequestEntity] + request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/trial/$trialId/issue")).withEntity(entity) + response <- transport.sendRequestGetResponse(requestContext)(request) + reply <- apiResponse[TrialIssue](response) + } yield { + CreateReply.Created(reply) + } + } + + override def getListByTrialId(trialId: StringId[Trial], + filter: SearchFilterExpr, + sorting: Option[Sorting], + pagination: Option[Pagination]) + (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = { + implicit val jsonReader: RootJsonReader[TrialIssue] = trialIssueReader(trialId) + + val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$trialId/issue", + filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)) + ) + for { + response <- transport.sendRequestGetResponse(requestContext)(request) + reply <- apiResponse[ListResponse[TrialIssue]](response) + } yield { + GetListByTrialIdReply.EntityList(reply.items, reply.meta.itemsCount, reply.meta.lastUpdate) + } + } + + override def getById(trialId: StringId[Trial], id: LongId[TrialIssue]) + (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = { + implicit val jsonReader: RootJsonReader[TrialIssue] = trialIssueReader(trialId) + + val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$trialId/issue/$id")) + for { + response <- transport.sendRequestGetResponse(requestContext)(request) + reply <- apiResponse[TrialIssue](response) + } yield { + GetByIdReply.Entity(reply) + } + } + + override def update(orig: TrialIssue, draft: TrialIssue) + (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = { + val trialId = draft.trialId + val id = orig.id.id + + implicit val jsonReader: RootJsonReader[TrialIssue] = trialIssueReader(trialId) + + for { + entity <- Marshal(draft).to[RequestEntity] + request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/trial/$trialId/issue/$id")).withEntity(entity) + response <- transport.sendRequestGetResponse(requestContext)(request) + reply <- apiResponse[TrialIssue](response) + } yield { + UpdateReply.Updated(reply) + } + } + + override def delete(trialId: StringId[Trial], id: LongId[TrialIssue]) + (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = { + val request = HttpRequest(HttpMethods.DELETE, endpointUri(baseUri, s"/v1/trial/$trialId/issue/$id")) + for { + response <- transport.sendRequestGetResponse(requestContext)(request) + _ <- apiResponse[HttpEntity](response) + } yield { + DeleteReply.Deleted + } + } + +} diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala index 4654c2e..6650d51 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala @@ -110,7 +110,7 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote } val id = origTrial.id.id - val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$id/$action", query)) + val request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/trial/$id/$action", query)) for { response <- transport.sendRequestGetResponse(requestContext)(request) reply <- apiResponse[Trial](response) |