forked from lichess-org/lila
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LearnProgress.scala
39 lines (31 loc) · 820 Bytes
/
LearnProgress.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package lila.learn
import org.joda.time.DateTime
import lila.user.User
case class LearnProgress(
_id: LearnProgress.Id,
stages: Map[String, StageProgress],
createdAt: DateTime,
updatedAt: DateTime) {
def id = _id
def withScore(stage: String, level: Int, s: StageProgress.Score) = copy(
stages = stages + (
stage -> stages.getOrElse(stage, StageProgress empty stage).withScore(level, s)
),
updatedAt = DateTime.now)
}
object LearnProgress {
sealed trait Id {
def str: String
}
case class UserId(value: String) extends Id {
def str = value
}
case class AnonId(value: String) extends Id {
def str = s"anon:$value"
}
def empty(id: Id) = LearnProgress(
_id = id,
stages = Map.empty,
createdAt = DateTime.now,
updatedAt = DateTime.now)
}