Skip to content

Commit

Permalink
#369 monitor vector tiles - proof-of-concept wip
Browse files Browse the repository at this point in the history
  • Loading branch information
vmarc committed Dec 12, 2023
1 parent c322ee0 commit 6defaf4
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package kpn.core.tools.monitor.support

import kpn.core.util.Log
import kpn.database.util.Mongo
import kpn.server.monitor.repository.MonitorRelationRepository
import kpn.server.monitor.repository.MonitorRelationRepositoryImpl
import kpn.server.monitor.repository.MonitorRouteRepository
import kpn.server.monitor.repository.MonitorRouteRepositoryImpl

object MonitorTileReportTool {
def main(args: Array[String]): Unit = {
Mongo.executeIn("kpn-monitor") { database =>
val routeRepository = new MonitorRouteRepositoryImpl(database)
val relationRepository = new MonitorRelationRepositoryImpl(database)
val tool = new MonitorTileReportTool(
routeRepository,
relationRepository
)
tool.report()
}
}
}

class MonitorTileReportTool(
routeRepository: MonitorRouteRepository,
relationRepository: MonitorRelationRepository
) {
private val log = Log(classOf[MonitorTileReportTool])

def report(): Unit = {
val tileNames = readTileNames()
println("|level|tile count|")
println("|---|---|")
(1 to 14).foreach { level =>
val tileCount = tileNames.filter(_.startsWith(s"$level-")).size
println(s"|$level|$tileCount|")
}
val totalTileCount = tileNames.size
println(s"|total|$totalTileCount|")
}

private def readTileNames(): Seq[String] = {
log.infoElapsed {
val tileNames = relationRepository.allTiles().map(_.name)
(s"read ${tileNames.size} tile names", tileNames)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,7 @@ import kpn.server.monitor.domain.MonitorRelation
trait MonitorRelationRepository {

def save(monitorRelation: MonitorRelation): Unit

def allTiles(): Seq[MonitorTileData]

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ package kpn.server.monitor.repository
import kpn.core.util.Log
import kpn.database.base.Database
import kpn.server.monitor.domain.MonitorRelation
import org.mongodb.scala.model.Aggregates.project
import org.mongodb.scala.model.Aggregates.unwind
import org.mongodb.scala.model.Projections.computed
import org.mongodb.scala.model.Projections.fields
import org.mongodb.scala.model.Accumulators.addToSet
import org.mongodb.scala.model.Aggregates.group
import org.mongodb.scala.model.Projections.excludeId
import org.mongodb.scala.model.Projections.include

class MonitorRelationRepositoryImpl(database: Database) extends MonitorRelationRepository {

Expand All @@ -11,4 +19,27 @@ class MonitorRelationRepositoryImpl(database: Database) extends MonitorRelationR
override def save(monitorRelation: MonitorRelation): Unit = {
database.monitorRelations.save(monitorRelation, log)
}

override def allTiles(): Seq[MonitorTileData] = {
val pipeline = Seq(
project(
fields(
include("tiles")
)
),
unwind("$tiles"),
group(
"$tiles",
addToSet("relationIds", "$_id")
),
project(
fields(
excludeId(),
computed("name", "$_id"),
include("relationIds")
)
),
)
database.monitorRelations.aggregate[MonitorTileData](pipeline, log)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package kpn.server.monitor.repository

case class MonitorTileData(
name: String,
relationIds: Seq[Long]
)

0 comments on commit 6defaf4

Please sign in to comment.