fix and restore activity truncation
parent
80c336fbe8
commit
3367eec955
|
@ -1,5 +1,7 @@
|
|||
package lila.activity
|
||||
|
||||
import reactivemongo.api.bson._
|
||||
|
||||
import lila.db.AsyncCollFailingSilently
|
||||
import lila.db.dsl._
|
||||
import lila.game.Game
|
||||
|
@ -152,9 +154,9 @@ final class ActivityWriteApi(
|
|||
!setters.isEmpty ?? {
|
||||
coll.update
|
||||
.one($id(activity.id), $set(setters), upsert = true)
|
||||
// .flatMap {
|
||||
// _.upserted.nonEmpty ?? truncateAfterInserting(coll, activity.id)
|
||||
// }
|
||||
.flatMap {
|
||||
_.upserted.nonEmpty ?? truncateAfterInserting(coll, activity.id)
|
||||
}
|
||||
.void
|
||||
}
|
||||
}
|
||||
|
@ -170,8 +172,16 @@ final class ActivityWriteApi(
|
|||
.one[Bdoc]
|
||||
.flatMap {
|
||||
_.flatMap(_.getAsOpt[Activity.Id]("_id")) ?? { oldId =>
|
||||
coll.delete.one($doc("_id" $lte oldId)).void
|
||||
coll.delete
|
||||
.one(
|
||||
$doc(
|
||||
"_id" -> $doc(
|
||||
"$lte" -> oldId,
|
||||
"$regex" -> BSONRegex(s"^${id.userId}$idSep", "")
|
||||
)
|
||||
)
|
||||
)
|
||||
.void
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,18 +19,18 @@ private object BSONHandlers {
|
|||
import activities._
|
||||
import model._
|
||||
|
||||
def regexId(userId: User.ID): Bdoc = "_id" $startsWith s"$userId:"
|
||||
val idSep = ':'
|
||||
def regexId(userId: User.ID): Bdoc = "_id" $startsWith s"$userId$idSep"
|
||||
|
||||
implicit lazy val activityIdHandler = {
|
||||
val sep = ':'
|
||||
tryHandler[Id](
|
||||
{ case BSONString(v) =>
|
||||
v split sep match {
|
||||
v split idSep match {
|
||||
case Array(userId, dayStr) => Success(Id(userId, Day(Integer.parseInt(dayStr))))
|
||||
case _ => handlerBadValue(s"Invalid activity id $v")
|
||||
}
|
||||
},
|
||||
id => BSONString(s"${id.userId}$sep${id.day.value}")
|
||||
id => BSONString(s"${id.userId}$idSep${id.day.value}")
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue