Add a route to get search summary

This commit is contained in:
Eike Kettner
2020-12-15 23:33:03 +01:00
parent 77627534bc
commit 80e23d1c84
3 changed files with 107 additions and 0 deletions

View File

@ -27,6 +27,22 @@ import org.log4s.Logger
trait Conversions {
def mkSearchStats(sum: OItemSearch.SearchSummary): SearchStats =
SearchStats(sum.count, mkTagCloud(sum.tags), sum.fields.map(mkFieldStats))
def mkFieldStats(fs: docspell.store.queries.FieldStats): FieldStats =
FieldStats(
fs.field.id,
fs.field.name,
fs.field.label,
fs.field.ftype,
fs.count,
fs.sum.doubleValue,
fs.avg.doubleValue,
fs.max.doubleValue,
fs.min.doubleValue
)
// insights
def mkItemInsights(d: InsightData): ItemInsights =
ItemInsights(

View File

@ -143,6 +143,14 @@ object ItemRoutes {
}
} yield resp
case req @ POST -> Root / "searchStats" =>
for {
mask <- req.as[ItemSearch]
query = Conversions.mkQuery(mask, user.account)
stats <- backend.itemSearch.findItemsSummary(query)
resp <- Ok(Conversions.mkSearchStats(stats))
} yield resp
case GET -> Root / Ident(id) =>
for {
item <- backend.itemSearch.findItem(id, user.account.collective)