more sub projects

This commit is contained in:
Thibault Duplessis 2013-02-28 03:51:12 +01:00
parent 30bd385a93
commit eb95291690
50 changed files with 141 additions and 201 deletions

View file

@ -3,7 +3,7 @@ package analyse
import scala.concurrent.duration._
import memo.ActorMemo
import lila.common.memo.ActorMemo
final class Cached(
analysisRepo: AnalysisRepo,

View file

@ -1,7 +1,7 @@
package lila.app
package forum
import memo.Builder
import lila.common.memo.Builder
import user.User
import security.{ Permission, Granter }

View file

@ -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,

View file

@ -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

View file

@ -2,7 +2,7 @@ package lila.app
package lobby
import game.DbGame
import memo.BooleanExpiryMemo
import lila.common.memo.BooleanExpiryMemo
import scalaz.effects._

View file

@ -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,

View file

@ -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)
}

View file

@ -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
}
}
}

View file

@ -1,7 +1,5 @@
package lila
import ornicar.scalalib
import com.novus.salat.{ Context, TypeHintFrequency, StringTypeHintStrategy }
import com.mongodb.casbah.commons.conversions.scala.RegisterJodaTimeConversionHelpers

View file

@ -2,7 +2,7 @@ package lila.app
package round
import game.DbGame
import memo.BooleanExpiryMemo
import lila.common.memo.BooleanExpiryMemo
import scalaz.effects._

View file

@ -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,

View file

@ -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._

View file

@ -1,7 +1,7 @@
package lila.app
package setup
import memo.Builder
import lila.common.memo.Builder
import scalaz.effects._

View file

@ -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) {

View file

@ -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._

View file

@ -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

View file

@ -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._

View file

@ -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

View file

@ -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)
}

View file

@ -1,5 +1,4 @@
package lila
package common
package lila.common
import play.api.data.Forms._

View file

@ -1,5 +1,4 @@
package lila
package common
package lila.common
import play.api.Play.current
import play.api.libs.concurrent._

View file

@ -1,5 +1,4 @@
package lila
package common
package lila.common
import java.text.Normalizer

View file

@ -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"
)

View file

@ -1,5 +1,4 @@
package lila.app
package memo
package lila.common.memo
import akka.actor._
import scala.concurrent.{ Future, Await }

View file

@ -1,5 +1,4 @@
package lila.app
package memo
package lila.common.memo
import scalaz.effects._
import scala.collection.JavaConversions._

View file

@ -1,5 +1,4 @@
package lila.app
package memo
package lila.common.memo
import com.google.common.base.Function
import com.google.common.cache._

View file

@ -1,5 +1,4 @@
package lila.app
package memo
package lila.common.memo
import scalaz.effects._

View file

@ -1,5 +1,3 @@
package lila
package object common extends lila.common.PackageObject {
}
package object common extends common.PackageObject

View file

@ -1,5 +1,4 @@
package lila.app
package mongodb
package lila.db
import com.github.ornicar.paginator._
import com.novus.salat.dao.DAO

View file

@ -1,5 +1,4 @@
package lila.app
package mongodb
package lila.db
import com.mongodb.casbah.MongoCollection
import com.mongodb.casbah.Imports._

View file

@ -1,5 +1,4 @@
package lila.app
package mongodb
package lila.db
import reactivemongo.api._
import reactivemongo.bson._

View file

@ -1,5 +1,4 @@
package lila.app
package mongodb
package lila.db
import play.api.libs.json._

View file

@ -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._

View file

@ -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)

15
db/Settings.scala Normal file
View file

@ -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")
}

3
db/package.scala Normal file
View file

@ -0,0 +1,3 @@
package lila
package object db extends common.PackageObject

View file

@ -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)
}

View file

@ -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

View file

@ -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(

View file

@ -1,5 +1,4 @@
package lila.app
package user
package lila.user
import scala.math.round
import scalaz.effects._

View file

@ -1,5 +1,4 @@
package lila.app
package user
package lila.user
import com.mongodb.casbah.MongoCollection
import com.mongodb.casbah.query.Imports._

View file

@ -1,5 +1,4 @@
package lila.app
package user
package lila.user
import com.github.ornicar.paginator._
import com.mongodb.casbah.Imports.DBObject

14
user/Settings.scala Normal file
View file

@ -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")
}

View file

@ -1,5 +1,4 @@
package lila.app
package ui
package lila.user
import scalaz.NonEmptyLists

View file

@ -1,5 +1,4 @@
package lila.app
package user
package lila.user
import com.novus.salat.annotations.Key
import org.joda.time.DateTime

View file

@ -1,5 +1,4 @@
package lila.app
package user
package lila.user
import com.mongodb.casbah.MongoCollection

View file

@ -1,5 +1,4 @@
package lila.app
package user
package lila.user
import com.novus.salat._
import com.novus.salat.dao._

View file

@ -1,7 +1,6 @@
package lila.app
package user
package lila.user
import memo.BooleanExpiryMemo
import lila.common.memo.BooleanExpiryMemo
import scalaz.effects._

View file

@ -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"
)

3
user/package.scala Normal file
View file

@ -0,0 +1,3 @@
package lila
package object user extends lila.common.PackageObject