Skip to content

Commit 98dc1ae

Browse files
committed
Changed return type of the search endpoint to include the total number of hits. Breaking change for clients. Closes #55.
1 parent bb295b6 commit 98dc1ae

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

Diff for: src/main/scala/de/upb/cs/swt/delphi/webapi/DelphiRoutes.scala

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import akka.http.scaladsl.server.Route
2424
import akka.pattern.ask
2525
import akka.stream.scaladsl.Source
2626
import de.upb.cs.swt.delphi.core.model.ArtifactJson._
27+
import de.upb.cs.swt.delphi.webapi.search.SearchResultsJson._
2728
import de.upb.cs.swt.delphi.webapi.FeatureJson._
2829
import de.upb.cs.swt.delphi.webapi.IpLogActor._
2930
import de.upb.cs.swt.delphi.webapi.StatisticsJson._

Diff for: src/main/scala/de/upb/cs/swt/delphi/webapi/artifacts/ArtifactTransformer.scala

+3-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import spray.json.JsArray
2525
import scala.io.Source
2626
import spray.json._
2727
import de.upb.cs.swt.delphi.webapi.FeatureJson._
28+
import de.upb.cs.swt.delphi.webapi.search.SearchResults
2829

2930
object ArtifactTransformer {
3031
private lazy val internalFeatures = Source.fromResource("features.json")
@@ -66,8 +67,8 @@ object ArtifactTransformer {
6667
}
6768

6869

69-
def transformResults(hits: SearchHits): Array[Artifact] = {
70-
hits.hits.map(h => transformResult(h))
70+
def transformResults(hits: SearchHits): SearchResults = {
71+
SearchResults(hits.total, hits.hits.map(h => transformResult(h)))
7172
}
7273

7374
val baseFields = Seq("source", "discovered", "identifier.groupId", "identifier.artifactId", "identifier.version")

Diff for: src/main/scala/de/upb/cs/swt/delphi/webapi/search/SearchQuery.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class SearchQuery(configuration: Configuration, featureExtractor: FeatureQuery)
160160
}
161161
}
162162

163-
def search(query: QueryRequest): Try[Array[Artifact]] = {
163+
def search(query: QueryRequest): Try[SearchResults] = {
164164
lazy val size = checkValidSize
165165
val validSize = size.exists(query.limit.getOrElse(defaultFetchSize) <= _)
166166
if (validSize) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package de.upb.cs.swt.delphi.webapi.search
2+
3+
import de.upb.cs.swt.delphi.core.model.Artifact
4+
import de.upb.cs.swt.delphi.core.model.ArtifactJson._
5+
import org.joda.time.DateTime
6+
import spray.json.DefaultJsonProtocol
7+
8+
case class SearchResults(totalHits : Long, hits : Array[Artifact], queried : DateTime = DateTime.now())
9+
10+
object SearchResultsJson extends DefaultJsonProtocol {
11+
implicit val SearchResultsFormat = jsonFormat3(SearchResults)
12+
}

0 commit comments

Comments
 (0)