From eb95291690fed1ea1441fa7fe9ba2061e8cc6c85 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 28 Feb 2013 03:51:12 +0100 Subject: [PATCH] more sub projects --- app/analyse/Cached.scala | 2 +- app/forum/Recent.scala | 2 +- app/game/Cached.scala | 2 +- app/http/Setting.scala | 4 +- app/lobby/Fisherman.scala | 2 +- app/lobby/LobbyEnv.scala | 2 +- app/mongodb/Cache.scala | 31 ---------- app/mongodb/CachePlugin.scala | 25 -------- app/package.scala | 2 - app/round/FinisherLock.scala | 2 +- app/round/History.scala | 2 +- app/security/Flood.scala | 2 +- app/setup/FriendConfigMemo.scala | 2 +- app/socket/History.scala | 2 +- app/socket/HubActor.scala | 2 +- app/templating/SettingHelper.scala | 2 +- app/tournament/Hub.scala | 2 +- app/tournament/TournamentEnv.scala | 2 +- common/ConfigSettings.scala | 26 +++++++++ common/Form.scala | 3 +- common/Futuristic.scala | 3 +- common/String.scala | 3 +- common/build.sbt | 21 ------- {app => common}/memo/ActorMemo.scala | 3 +- {app => common}/memo/BooleanExpiryMemo.scala | 3 +- {app => common}/memo/Builder.scala | 3 +- {app => common}/memo/MonoMemo.scala | 3 +- common/package.scala | 4 +- {app/mongodb => db}/CachedAdapter.scala | 3 +- {app/mongodb => db}/CappedRepo.scala | 3 +- {app/mongodb => db}/Coll.scala | 3 +- {app/mongodb => db}/JsonTube.scala | 3 +- {app/mongodb => db}/Mongo2Env.scala | 5 +- {app/mongodb => db}/MongoDbEnv.scala | 10 +--- db/Settings.scala | 15 +++++ db/package.scala | 3 + project/Build.scala | 61 ++++++++++++-------- {app/user => user}/Cached.scala | 5 +- {app/user => user}/DataForm.scala | 5 +- {app/user => user}/EloChart.scala | 3 +- {app/user => user}/HistoryRepo.scala | 3 +- {app/user => user}/PaginatorBuilder.scala | 3 +- user/Settings.scala | 14 +++++ {app/ui => user}/Theme.scala | 3 +- {app/user => user}/User.scala | 3 +- {app/user => user}/UserEnv.scala | 3 +- {app/user => user}/UserRepo.scala | 3 +- {app/user => user}/UsernameMemo.scala | 5 +- user/build.sbt | 21 ------- user/package.scala | 3 + 50 files changed, 141 insertions(+), 201 deletions(-) delete mode 100644 app/mongodb/Cache.scala delete mode 100644 app/mongodb/CachePlugin.scala create mode 100644 common/ConfigSettings.scala delete mode 100644 common/build.sbt rename {app => common}/memo/ActorMemo.scala (97%) rename {app => common}/memo/BooleanExpiryMemo.scala (95%) rename {app => common}/memo/Builder.scala (97%) rename {app => common}/memo/MonoMemo.scala (91%) rename {app/mongodb => db}/CachedAdapter.scala (93%) rename {app/mongodb => db}/CappedRepo.scala (93%) rename {app/mongodb => db}/Coll.scala (97%) rename {app/mongodb => db}/JsonTube.scala (93%) rename {app/mongodb => db}/Mongo2Env.scala (68%) rename {app/mongodb => db}/MongoDbEnv.scala (81%) create mode 100644 db/Settings.scala create mode 100644 db/package.scala rename {app/user => user}/Cached.scala (94%) rename {app/user => user}/DataForm.scala (95%) rename {app/user => user}/EloChart.scala (98%) rename {app/user => user}/HistoryRepo.scala (98%) rename {app/user => user}/PaginatorBuilder.scala (95%) create mode 100644 user/Settings.scala rename {app/ui => user}/Theme.scala (95%) rename {app/user => user}/User.scala (97%) rename {app/user => user}/UserEnv.scala (96%) rename {app/user => user}/UserRepo.scala (99%) rename {app/user => user}/UsernameMemo.scala (88%) delete mode 100644 user/build.sbt create mode 100644 user/package.scala diff --git a/app/analyse/Cached.scala b/app/analyse/Cached.scala index 6a0baff4a3..f13e49005c 100644 --- a/app/analyse/Cached.scala +++ b/app/analyse/Cached.scala @@ -3,7 +3,7 @@ package analyse import scala.concurrent.duration._ -import memo.ActorMemo +import lila.common.memo.ActorMemo final class Cached( analysisRepo: AnalysisRepo, diff --git a/app/forum/Recent.scala b/app/forum/Recent.scala index 5eb95fb4e1..665e6fae8f 100644 --- a/app/forum/Recent.scala +++ b/app/forum/Recent.scala @@ -1,7 +1,7 @@ package lila.app package forum -import memo.Builder +import lila.common.memo.Builder import user.User import security.{ Permission, Granter } diff --git a/app/game/Cached.scala b/app/game/Cached.scala index 9ff055a15f..1a6d8cac43 100644 --- a/app/game/Cached.scala +++ b/app/game/Cached.scala @@ -3,7 +3,7 @@ package game import scala.concurrent.duration._ -import memo.ActorMemo +import lila.common.memo.ActorMemo private[game] final class Cached( gameRepo: GameRepo, diff --git a/app/http/Setting.scala b/app/http/Setting.scala index a9c0866258..29213b16a0 100644 --- a/app/http/Setting.scala +++ b/app/http/Setting.scala @@ -1,8 +1,8 @@ package lila.app package http -import ui.Theme -import user.UserRepo +import lila.user.Theme +import lila.user.UserRepo import scalaz.effects._ import play.api.mvc.Cookie diff --git a/app/lobby/Fisherman.scala b/app/lobby/Fisherman.scala index 4412f22a76..fe8e78c27d 100644 --- a/app/lobby/Fisherman.scala +++ b/app/lobby/Fisherman.scala @@ -2,7 +2,7 @@ package lila.app package lobby import game.DbGame -import memo.BooleanExpiryMemo +import lila.common.memo.BooleanExpiryMemo import scalaz.effects._ diff --git a/app/lobby/LobbyEnv.scala b/app/lobby/LobbyEnv.scala index 4bdb0ad0a1..f965feefae 100644 --- a/app/lobby/LobbyEnv.scala +++ b/app/lobby/LobbyEnv.scala @@ -16,7 +16,7 @@ import round.{ Socket ⇒ RoundSocket, Messenger ⇒ RoundMessenger } import socket.History import security.Flood import core.Settings -import memo.BooleanExpiryMemo +import lila.common.memo.BooleanExpiryMemo final class LobbyEnv( app: Application, diff --git a/app/mongodb/Cache.scala b/app/mongodb/Cache.scala deleted file mode 100644 index c9fc074948..0000000000 --- a/app/mongodb/Cache.scala +++ /dev/null @@ -1,31 +0,0 @@ -package lila.app -package mongodb - -import com.mongodb.casbah.MongoCollection -import com.mongodb.casbah.Imports._ - -import scala.reflect.{ClassTag, classTag} - -final class Cache(collection: MongoCollection) { - - private val field = "v" - - def set(key: String, value: Any): Unit = { - collection += DBObject("_id" -> key, field -> value) - } - - def get(key: String): Option[Any] = for { - o ← collection.findOne(select(key)) - v ← Option(o get field) - } yield v - - def getAs[T : ClassTag](key: String): Option[T] = for { - v ← get(key) - } yield v.asInstanceOf[T] - - def remove(key: String) { - collection remove select(key) - } - - private def select(key: String) = DBObject("_id" -> key) -} diff --git a/app/mongodb/CachePlugin.scala b/app/mongodb/CachePlugin.scala deleted file mode 100644 index 8533ed7d02..0000000000 --- a/app/mongodb/CachePlugin.scala +++ /dev/null @@ -1,25 +0,0 @@ -package lila.app -package mongodb - -import lila.app.core.Global - -import play.api.Application -import play.api.cache.{ CacheAPI, CachePlugin => PlayCachePlugin } - -class CachePlugin(app: Application) extends PlayCachePlugin { - - lazy val cache = Global.env.mongodb.cache - - lazy val api = new CacheAPI { - - def set(key: String, value: Any, expiration: Int) { - cache.set(key, value) - } - - def get(key: String): Option[Any] = cache get key - - def remove(key: String) { - cache remove key - } - } -} diff --git a/app/package.scala b/app/package.scala index 7cb26b9084..88d94e21ad 100644 --- a/app/package.scala +++ b/app/package.scala @@ -1,7 +1,5 @@ package lila -import ornicar.scalalib - import com.novus.salat.{ Context, TypeHintFrequency, StringTypeHintStrategy } import com.mongodb.casbah.commons.conversions.scala.RegisterJodaTimeConversionHelpers diff --git a/app/round/FinisherLock.scala b/app/round/FinisherLock.scala index 9b6d208b20..4f2b7e2671 100644 --- a/app/round/FinisherLock.scala +++ b/app/round/FinisherLock.scala @@ -2,7 +2,7 @@ package lila.app package round import game.DbGame -import memo.BooleanExpiryMemo +import lila.common.memo.BooleanExpiryMemo import scalaz.effects._ diff --git a/app/round/History.scala b/app/round/History.scala index 3627607793..351aa13fcd 100644 --- a/app/round/History.scala +++ b/app/round/History.scala @@ -5,7 +5,7 @@ import play.api.libs.json._ import scalaz.effects._ import chess.Color -import memo.Builder +import lila.common.memo.Builder case class VersionedEvent( version: Int, diff --git a/app/security/Flood.scala b/app/security/Flood.scala index 188f7a886f..26cf720860 100644 --- a/app/security/Flood.scala +++ b/app/security/Flood.scala @@ -1,7 +1,7 @@ package lila.app package security -import memo.Builder +import lila.common.memo.Builder import org.joda.time.DateTime import org.scala_tools.time.Imports._ diff --git a/app/setup/FriendConfigMemo.scala b/app/setup/FriendConfigMemo.scala index e9bd9ad8d5..0fb88ec0a9 100644 --- a/app/setup/FriendConfigMemo.scala +++ b/app/setup/FriendConfigMemo.scala @@ -1,7 +1,7 @@ package lila.app package setup -import memo.Builder +import lila.common.memo.Builder import scalaz.effects._ diff --git a/app/socket/History.scala b/app/socket/History.scala index 29a9d8f977..8277140e6c 100644 --- a/app/socket/History.scala +++ b/app/socket/History.scala @@ -5,7 +5,7 @@ import scala.math.max import play.api.libs.json._ import scalaz.effects._ -import memo.Builder +import lila.common.memo.Builder final class History(timeout: Int) { diff --git a/app/socket/HubActor.scala b/app/socket/HubActor.scala index daeb3625bb..56149def37 100644 --- a/app/socket/HubActor.scala +++ b/app/socket/HubActor.scala @@ -1,7 +1,7 @@ package lila.app package socket -import memo.BooleanExpiryMemo +import lila.common.memo.BooleanExpiryMemo import akka.actor._ import play.api.libs.json._ diff --git a/app/templating/SettingHelper.scala b/app/templating/SettingHelper.scala index 23497ef7de..a92b60d12d 100644 --- a/app/templating/SettingHelper.scala +++ b/app/templating/SettingHelper.scala @@ -2,7 +2,7 @@ package lila.app package templating import http.{ Context, Setting } -import ui.Theme +import lila.user.Theme import play.api.templates.Html diff --git a/app/tournament/Hub.scala b/app/tournament/Hub.scala index bd416089dd..036ec8f440 100644 --- a/app/tournament/Hub.scala +++ b/app/tournament/Hub.scala @@ -3,7 +3,7 @@ package tournament import game.DbGame import socket._ -import memo.BooleanExpiryMemo +import lila.common.memo.BooleanExpiryMemo import akka.actor._ import scala.concurrent.duration._ diff --git a/app/tournament/TournamentEnv.scala b/app/tournament/TournamentEnv.scala index 7aae94dfaf..dbaa1ee03c 100644 --- a/app/tournament/TournamentEnv.scala +++ b/app/tournament/TournamentEnv.scala @@ -7,7 +7,7 @@ import core.Settings import security.Flood import lobby.{ Socket ⇒ LobbySocket } import socket.History -import memo.MonoMemo +import lila.common.memo.MonoMemo import scalastic.elasticsearch import com.mongodb.casbah.MongoCollection diff --git a/common/ConfigSettings.scala b/common/ConfigSettings.scala new file mode 100644 index 0000000000..eab6a2cf54 --- /dev/null +++ b/common/ConfigSettings.scala @@ -0,0 +1,26 @@ +package lila.common + +import com.typesafe.config.{ Config, ConfigObject } +import scalaz.{ Success, Failure } + +abstract class ConfigSettings(config: Config) { + + def this(configObject: ConfigObject) = this(configObject.toConfig) + + protected def getInt(name: String) = config getInt name + protected def getString(name: String) = config getString name + protected def getMilliseconds(name: String) = config getMilliseconds name + + protected def millis(name: String): Int = getMilliseconds(name).toInt + + protected def seconds(name: String): Int = millis(name) / 1000 + + protected implicit def validAny[A](a: A) = new { + def valid(f: A ⇒ Valid[A]): A = f(a) match { + case Success(a) ⇒ a + case Failure(err) ⇒ throw new Invalid(err.shows) + } + } + + private class Invalid(msg: String) extends Exception(msg) +} diff --git a/common/Form.scala b/common/Form.scala index f47e168b06..6146bc2e3a 100644 --- a/common/Form.scala +++ b/common/Form.scala @@ -1,5 +1,4 @@ -package lila -package common +package lila.common import play.api.data.Forms._ diff --git a/common/Futuristic.scala b/common/Futuristic.scala index 7071daf756..ffb52efb46 100644 --- a/common/Futuristic.scala +++ b/common/Futuristic.scala @@ -1,5 +1,4 @@ -package lila -package common +package lila.common import play.api.Play.current import play.api.libs.concurrent._ diff --git a/common/String.scala b/common/String.scala index 526a5b25fd..6fb1e66de1 100644 --- a/common/String.scala +++ b/common/String.scala @@ -1,5 +1,4 @@ -package lila -package common +package lila.common import java.text.Normalizer diff --git a/common/build.sbt b/common/build.sbt deleted file mode 100644 index 7b8e7a1cc8..0000000000 --- a/common/build.sbt +++ /dev/null @@ -1,21 +0,0 @@ -name := "lila-common" - -organization := "org.lichess" - -scalaVersion := "2.10.0" - -resolvers ++= Seq( - "iliaz.com" at "http://scala.iliaz.com/", - "sonatype" at "http://oss.sonatype.org/content/repositories/releases", - "sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots", - "typesafe.com" at "http://repo.typesafe.com/typesafe/releases/" -) - -libraryDependencies ++= Seq( - "org.scalaz" %% "scalaz-core" % "6.0.4", - "com.github.ornicar" %% "scalalib" % "3.3", - // "play" %% "play" % "2.1.0" % "provided", - "joda-time" % "joda-time" % "2.1", - "org.joda" % "joda-convert" % "1.2", - "org.reactivemongo" %% "reactivemongo" % "0.8" -) diff --git a/app/memo/ActorMemo.scala b/common/memo/ActorMemo.scala similarity index 97% rename from app/memo/ActorMemo.scala rename to common/memo/ActorMemo.scala index feea290936..7f6f0371de 100644 --- a/app/memo/ActorMemo.scala +++ b/common/memo/ActorMemo.scala @@ -1,5 +1,4 @@ -package lila.app -package memo +package lila.common.memo import akka.actor._ import scala.concurrent.{ Future, Await } diff --git a/app/memo/BooleanExpiryMemo.scala b/common/memo/BooleanExpiryMemo.scala similarity index 95% rename from app/memo/BooleanExpiryMemo.scala rename to common/memo/BooleanExpiryMemo.scala index 72ce44f146..774bb610d1 100644 --- a/app/memo/BooleanExpiryMemo.scala +++ b/common/memo/BooleanExpiryMemo.scala @@ -1,5 +1,4 @@ -package lila.app -package memo +package lila.common.memo import scalaz.effects._ import scala.collection.JavaConversions._ diff --git a/app/memo/Builder.scala b/common/memo/Builder.scala similarity index 97% rename from app/memo/Builder.scala rename to common/memo/Builder.scala index c5e45ae050..f6d3cea291 100644 --- a/app/memo/Builder.scala +++ b/common/memo/Builder.scala @@ -1,5 +1,4 @@ -package lila.app -package memo +package lila.common.memo import com.google.common.base.Function import com.google.common.cache._ diff --git a/app/memo/MonoMemo.scala b/common/memo/MonoMemo.scala similarity index 91% rename from app/memo/MonoMemo.scala rename to common/memo/MonoMemo.scala index 46f5e26d88..839c39d661 100644 --- a/app/memo/MonoMemo.scala +++ b/common/memo/MonoMemo.scala @@ -1,5 +1,4 @@ -package lila.app -package memo +package lila.common.memo import scalaz.effects._ diff --git a/common/package.scala b/common/package.scala index 47f85a0c51..810ecca78a 100644 --- a/common/package.scala +++ b/common/package.scala @@ -1,5 +1,3 @@ package lila -package object common extends lila.common.PackageObject { - -} +package object common extends common.PackageObject diff --git a/app/mongodb/CachedAdapter.scala b/db/CachedAdapter.scala similarity index 93% rename from app/mongodb/CachedAdapter.scala rename to db/CachedAdapter.scala index 67ff355fef..5af1888661 100644 --- a/app/mongodb/CachedAdapter.scala +++ b/db/CachedAdapter.scala @@ -1,5 +1,4 @@ -package lila.app -package mongodb +package lila.db import com.github.ornicar.paginator._ import com.novus.salat.dao.DAO diff --git a/app/mongodb/CappedRepo.scala b/db/CappedRepo.scala similarity index 93% rename from app/mongodb/CappedRepo.scala rename to db/CappedRepo.scala index 7364124c44..715b09e273 100644 --- a/app/mongodb/CappedRepo.scala +++ b/db/CappedRepo.scala @@ -1,5 +1,4 @@ -package lila.app -package mongodb +package lila.db import com.mongodb.casbah.MongoCollection import com.mongodb.casbah.Imports._ diff --git a/app/mongodb/Coll.scala b/db/Coll.scala similarity index 97% rename from app/mongodb/Coll.scala rename to db/Coll.scala index 710566c0d1..957c8709c0 100644 --- a/app/mongodb/Coll.scala +++ b/db/Coll.scala @@ -1,5 +1,4 @@ -package lila.app -package mongodb +package lila.db import reactivemongo.api._ import reactivemongo.bson._ diff --git a/app/mongodb/JsonTube.scala b/db/JsonTube.scala similarity index 93% rename from app/mongodb/JsonTube.scala rename to db/JsonTube.scala index 3f6a7cabef..d322387eef 100644 --- a/app/mongodb/JsonTube.scala +++ b/db/JsonTube.scala @@ -1,5 +1,4 @@ -package lila.app -package mongodb +package lila.db import play.api.libs.json._ diff --git a/app/mongodb/Mongo2Env.scala b/db/Mongo2Env.scala similarity index 68% rename from app/mongodb/Mongo2Env.scala rename to db/Mongo2Env.scala index 67c6501f9a..33be2b50d9 100644 --- a/app/mongodb/Mongo2Env.scala +++ b/db/Mongo2Env.scala @@ -1,10 +1,7 @@ -package lila.app -package mongodb +package lila.db import reactivemongo.api._ -import core.Settings - final class Mongo2Env(val db: DB[Collection], settings: Settings) { import settings._ diff --git a/app/mongodb/MongoDbEnv.scala b/db/MongoDbEnv.scala similarity index 81% rename from app/mongodb/MongoDbEnv.scala rename to db/MongoDbEnv.scala index ef0445cc11..93ed9e159d 100644 --- a/app/mongodb/MongoDbEnv.scala +++ b/db/MongoDbEnv.scala @@ -1,19 +1,15 @@ -package lila.app -package mongodb +package lila.db import com.mongodb.casbah.MongoConnection import com.mongodb.{ Mongo, MongoOptions, ServerAddress ⇒ MongoServer } -import core.Settings - -final class MongoDbEnv( - settings: Settings) { +final class MongoDbEnv(settings: Settings) { import settings._ def apply(coll: String) = connection(coll) - lazy val cache = new Cache(connection(CoreCollectionCache)) + // lazy val cache = new Cache(connection(CoreCollectionCache)) lazy val connection = MongoConnection(server, options)(MongoDbName) diff --git a/db/Settings.scala b/db/Settings.scala new file mode 100644 index 0000000000..8a0feba995 --- /dev/null +++ b/db/Settings.scala @@ -0,0 +1,15 @@ +package lila.db + +import lila.common.ConfigSettings +import com.typesafe.config.Config + +final class Settings(config: Config) extends ConfigSettings(config getObject "mongodb") { + + val MongoHost = getString("host") + val MongoPort = getInt("port") + val MongoDbName = getString("dbName") + val MongoConnectionsPerHost = getInt("connectionsPerHost") + val MongoAutoConnectRetry = getBoolean("autoConnectRetry") + val MongoConnectTimeout = millis("connectTimeout") + val MongoBlockingThreads = getInt("threadsAllowedToBlockForConnectionMultiplier") +} diff --git a/db/package.scala b/db/package.scala new file mode 100644 index 0000000000..4b72e40e7c --- /dev/null +++ b/db/package.scala @@ -0,0 +1,3 @@ +package lila + +package object db extends common.PackageObject diff --git a/project/Build.scala b/project/Build.scala index 8728c5faa8..28ff4885ef 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -28,7 +28,7 @@ trait Dependencies { val paginator = "com.github.ornicar" % "paginator-core_2.9.1" % "1.6" val paginatorSalat = "com.github.ornicar" % "paginator-salat-adapter_2.9.1" % "1.5" val csv = "com.github.tototoshi" % "scala-csv_2.9.1" % "0.3" - val hasher = "hasher" %% "hasher" % "0.3.1" + val hasher = "hasher" %% "hasher" % "0.3.1" val jgit = "org.eclipse.jgit" % "org.eclipse.jgit" % "1.3.0.201202151440-r" val actuarius = "eu.henkelmann" % "actuarius_2.9.2" % "0.2.4" val jodaTime = "joda-time" % "joda-time" % "2.1" @@ -44,7 +44,11 @@ trait Dependencies { object ApplicationBuild extends Build with Resolvers with Dependencies { private val buildSettings = Defaults.defaultSettings ++ Seq( - scalaVersion := "2.10.0", + organization in ThisBuild := "org.lichess", + scalaVersion in ThisBuild := "2.10.0", + resolvers in ThisBuild ++= Seq( + awesomepom, sgodbillon, iliaz, sonatype, sonatypeS, + typesafe, t2v, guice, jgitMaven, christophs), scalacOptions := Seq( "-deprecation", "-unchecked", @@ -52,36 +56,43 @@ object ApplicationBuild extends Build with Resolvers with Dependencies { "-language:_") ) - lazy val lila = play.Project("lila", "3", Seq( - scalaz, scalalib, hasher, config, salat, guava, apache, scalaTime, - paginator, paginatorSalat, csv, jgit, actuarius, scalastic, findbugs, - reactivemongo, playReactivemongo - ), settings = buildSettings).settings( - templatesImport ++= Seq( - "lila.app.game.{ DbGame, DbPlayer, Pov }", - "lila.app.user.User", - "lila.app.security.Permission", - "lila.app.templating.Environment._", - "lila.app.ui", - "lila.app.http.Context", - "com.github.ornicar.paginator.Paginator"), - resolvers ++= Seq(awesomepom, sgodbillon, iliaz, sonatype, sonatypeS, typesafe, t2v, guice, jgitMaven, christophs) - ) dependsOn (scalachess, common, game) aggregate (scalachess, common, game) + lazy val lila = play.Project("lila", "4", + settings = buildSettings ++ Seq( + libraryDependencies := Seq( + scalaz, scalalib, hasher, config, salat, guava, apache, scalaTime, + paginator, paginatorSalat, csv, jgit, actuarius, scalastic, findbugs, + reactivemongo), + templatesImport ++= Seq( + "lila.app.game.{ DbGame, DbPlayer, Pov }", + "lila.app.user.User", + "lila.app.security.Permission", + "lila.app.templating.Environment._", + "lila.app.ui", + "lila.app.http.Context", + "com.github.ornicar.paginator.Paginator") + )) dependsOn (user) aggregate (scalachess, common, db, user) lazy val common = project("common").settings( - resolvers := Seq(iliaz, sonatype), - libraryDependencies := Seq(scalaz, scalalib, jodaTime, jodaConvert, playProvided) + libraryDependencies := Seq(scalaz, scalalib, jodaTime, jodaConvert, playProvided, guava, + reactivemongo) ) - lazy val user = project("user").settings( - resolvers := Seq(iliaz, sonatype), - libraryDependencies := Seq(scalaz, scalalib, jodaTime, jodaConvert, playProvided) - ) dependsOn (scalachess) + lazy val db = project("db", Seq(common)).settings( + libraryDependencies := Seq(scalaz, scalalib, playProvided, guava, salat, reactivemongo, + paginator, paginatorSalat, playReactivemongo) + ) + + lazy val user = project("user", Seq(scalachess, common, db)).settings( + libraryDependencies := Seq(scalaz, scalalib, jodaTime, jodaConvert, playProvided, salat, + paginator, paginatorSalat) + ) lazy val scalachess = project("scalachess").settings( - resolvers := Seq(iliaz, sonatype, awesomepom), libraryDependencies := Seq(scalaz, scalalib, hasher, jodaTime, jodaConvert) ) - private def project(name: String) = Project(name, file(name), settings = buildSettings) + private type DepType = sbt.ClasspathDep[sbt.ProjectReference] + + private def project(name: String, deps: Seq[DepType] = Seq.empty) = + Project(name, file(name), settings = buildSettings, dependencies = deps) } diff --git a/app/user/Cached.scala b/user/Cached.scala similarity index 94% rename from app/user/Cached.scala rename to user/Cached.scala index ebf8c2669d..3be5112aa1 100644 --- a/app/user/Cached.scala +++ b/user/Cached.scala @@ -1,7 +1,6 @@ -package lila.app -package user +package lila.user -import memo.ActorMemo +import lila.common.memo.ActorMemo import scala.concurrent.duration._ import scala.collection.mutable diff --git a/app/user/DataForm.scala b/user/DataForm.scala similarity index 95% rename from app/user/DataForm.scala rename to user/DataForm.scala index 8687610815..eb3d9e1c9c 100644 --- a/app/user/DataForm.scala +++ b/user/DataForm.scala @@ -1,11 +1,8 @@ -package lila.app -package user +package lila.user import play.api.data._ import play.api.data.Forms._ -import ui.Theme - object DataForm { val bio = Form(single( diff --git a/app/user/EloChart.scala b/user/EloChart.scala similarity index 98% rename from app/user/EloChart.scala rename to user/EloChart.scala index 786cd9dd3d..a4c2944de7 100644 --- a/app/user/EloChart.scala +++ b/user/EloChart.scala @@ -1,5 +1,4 @@ -package lila.app -package user +package lila.user import scala.math.round import scalaz.effects._ diff --git a/app/user/HistoryRepo.scala b/user/HistoryRepo.scala similarity index 98% rename from app/user/HistoryRepo.scala rename to user/HistoryRepo.scala index a1acfaae9a..98c19e3f81 100644 --- a/app/user/HistoryRepo.scala +++ b/user/HistoryRepo.scala @@ -1,5 +1,4 @@ -package lila.app -package user +package lila.user import com.mongodb.casbah.MongoCollection import com.mongodb.casbah.query.Imports._ diff --git a/app/user/PaginatorBuilder.scala b/user/PaginatorBuilder.scala similarity index 95% rename from app/user/PaginatorBuilder.scala rename to user/PaginatorBuilder.scala index 7fd167481b..ac9cd2bae3 100644 --- a/app/user/PaginatorBuilder.scala +++ b/user/PaginatorBuilder.scala @@ -1,5 +1,4 @@ -package lila.app -package user +package lila.user import com.github.ornicar.paginator._ import com.mongodb.casbah.Imports.DBObject diff --git a/user/Settings.scala b/user/Settings.scala new file mode 100644 index 0000000000..d550515b3e --- /dev/null +++ b/user/Settings.scala @@ -0,0 +1,14 @@ +package lila.user + +import lila.common.ConfigSettings +import com.typesafe.config.Config + +final class Settings(config: Config) extends ConfigSettings(config getObject "user") { + + val UserPaginatorMaxPerPage = getInt("paginator.max_per_page") + val UserEloUpdaterFloor = getInt("elo_updater.floor") + val UserCachedNbTtl = millis("cached.nb.ttl") + val UserCollectionUser = getString("collection.user") + val UserCollectionHistory = getString("collection.history") + val UserCollectionConfig = getString("collection.config") +} diff --git a/app/ui/Theme.scala b/user/Theme.scala similarity index 95% rename from app/ui/Theme.scala rename to user/Theme.scala index 0c3b66f595..df755b66e0 100644 --- a/app/ui/Theme.scala +++ b/user/Theme.scala @@ -1,5 +1,4 @@ -package lila.app -package ui +package lila.user import scalaz.NonEmptyLists diff --git a/app/user/User.scala b/user/User.scala similarity index 97% rename from app/user/User.scala rename to user/User.scala index c1d31af8b0..5a13c040fc 100644 --- a/app/user/User.scala +++ b/user/User.scala @@ -1,5 +1,4 @@ -package lila.app -package user +package lila.user import com.novus.salat.annotations.Key import org.joda.time.DateTime diff --git a/app/user/UserEnv.scala b/user/UserEnv.scala similarity index 96% rename from app/user/UserEnv.scala rename to user/UserEnv.scala index a023ce54b1..b340a3e1f1 100644 --- a/app/user/UserEnv.scala +++ b/user/UserEnv.scala @@ -1,5 +1,4 @@ -package lila.app -package user +package lila.user import com.mongodb.casbah.MongoCollection diff --git a/app/user/UserRepo.scala b/user/UserRepo.scala similarity index 99% rename from app/user/UserRepo.scala rename to user/UserRepo.scala index 4896ba9b20..4e9ee56ce9 100644 --- a/app/user/UserRepo.scala +++ b/user/UserRepo.scala @@ -1,5 +1,4 @@ -package lila.app -package user +package lila.user import com.novus.salat._ import com.novus.salat.dao._ diff --git a/app/user/UsernameMemo.scala b/user/UsernameMemo.scala similarity index 88% rename from app/user/UsernameMemo.scala rename to user/UsernameMemo.scala index d08af7e892..b57c47526a 100644 --- a/app/user/UsernameMemo.scala +++ b/user/UsernameMemo.scala @@ -1,7 +1,6 @@ -package lila.app -package user +package lila.user -import memo.BooleanExpiryMemo +import lila.common.memo.BooleanExpiryMemo import scalaz.effects._ diff --git a/user/build.sbt b/user/build.sbt deleted file mode 100644 index 6d5a80ed87..0000000000 --- a/user/build.sbt +++ /dev/null @@ -1,21 +0,0 @@ -name := "lila-user" - -organization := "org.lichess" - -scalaVersion := "2.10.0" - -resolvers ++= Seq( - "iliaz.com" at "http://scala.iliaz.com/", - "sonatype" at "http://oss.sonatype.org/content/repositories/releases", - "sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots", - "typesafe.com" at "http://repo.typesafe.com/typesafe/releases/" -) - -libraryDependencies ++= Seq( - "org.scalaz" %% "scalaz-core" % "6.0.4", - "com.github.ornicar" %% "scalalib" % "3.3", - // "play" %% "play" % "2.1.0" % "provided", - "joda-time" % "joda-time" % "2.1", - "org.joda" % "joda-convert" % "1.2", - "org.reactivemongo" %% "reactivemongo" % "0.8" -) diff --git a/user/package.scala b/user/package.scala new file mode 100644 index 0000000000..650db726a9 --- /dev/null +++ b/user/package.scala @@ -0,0 +1,3 @@ +package lila + +package object user extends lila.common.PackageObject