46 lines
1.2 KiB
Scala
46 lines
1.2 KiB
Scala
package lila.gameSearch
|
|
|
|
import akka.actor.ActorSystem
|
|
import com.softwaremill.macwire._
|
|
import io.methvin.play.autoconfig._
|
|
import play.api.Configuration
|
|
|
|
import lila.game.actorApi.{ FinishGame, InsertGame }
|
|
import lila.search._
|
|
import lila.common.config._
|
|
|
|
@Module
|
|
private class GameSearchConfig(
|
|
@ConfigName("index") val indexName: String,
|
|
@ConfigName("paginator.max_per_page") val paginatorMaxPerPage: MaxPerPage,
|
|
@ConfigName("actor.name") val actorName: String
|
|
)
|
|
|
|
@Module
|
|
final class Env(
|
|
appConfig: Configuration,
|
|
gameRepo: lila.game.GameRepo,
|
|
makeClient: Index => ESClient
|
|
)(implicit
|
|
ec: scala.concurrent.ExecutionContext,
|
|
system: ActorSystem
|
|
) {
|
|
|
|
private val config = appConfig.get[GameSearchConfig]("gameSearch")(AutoConfig.loader)
|
|
|
|
private lazy val client = makeClient(Index(config.indexName))
|
|
|
|
lazy val api = wire[GameSearchApi]
|
|
|
|
lazy val paginator = wire[PaginatorBuilder[lila.game.Game, Query]]
|
|
|
|
lazy val forms = wire[GameSearchForm]
|
|
|
|
lazy val userGameSearch = wire[UserGameSearch]
|
|
|
|
lila.common.Bus.subscribeFun("finishGame", "gameSearchInsert") {
|
|
case FinishGame(game, _, _) if !game.aborted => api store game
|
|
case InsertGame(game) => api store game
|
|
}
|
|
}
|