clear nbRequest cache on request deletion
parent
703223d28f
commit
688cee1fdb
|
@ -56,7 +56,7 @@ final class Env(
|
|||
|
||||
system.lilaBus.subscribe(system.actorOf(Props(new Actor {
|
||||
def receive = {
|
||||
case lila.hub.actorApi.mod.Shadowban(userId, true) => RequestRepo deleteByUserId userId
|
||||
case lila.hub.actorApi.mod.Shadowban(userId, true) => api deleteRequestsByUserId userId
|
||||
}
|
||||
})), 'shadowban)
|
||||
}
|
||||
|
|
|
@ -33,6 +33,8 @@ object RequestRepo {
|
|||
def teamQuery(teamId: ID) = $doc("team" -> teamId)
|
||||
def teamsQuery(teamIds: List[ID]) = $doc("team" $in teamIds)
|
||||
|
||||
def deleteByUserId(userId: lila.user.User.ID) =
|
||||
coll.remove($doc("user" -> userId))
|
||||
def getByUserId(userId: lila.user.User.ID) =
|
||||
coll.find($doc("user" -> userId)).list[Request]()
|
||||
|
||||
def remove(id: ID) = coll.remove($id(id))
|
||||
}
|
||||
|
|
|
@ -115,6 +115,14 @@ final class TeamApi(
|
|||
doJoin(team, user.id) >>- notifier.acceptRequest(team, request))
|
||||
} yield ()
|
||||
|
||||
def deleteRequestsByUserId(userId: lila.user.User.ID) =
|
||||
RequestRepo.getByUserId(userId) flatMap {
|
||||
_.map { request =>
|
||||
RequestRepo.remove(request.id) >>
|
||||
TeamRepo.creatorOf(request.team).map { _ ?? cached.nbRequests.invalidate }
|
||||
}.sequenceFu
|
||||
}
|
||||
|
||||
def doJoin(team: Team, userId: String): Funit = !belongsTo(team.id, userId) flatMap {
|
||||
_ ?? {
|
||||
MemberRepo.add(team.id, userId) >>
|
||||
|
|
|
@ -5,6 +5,7 @@ import reactivemongo.api._
|
|||
import reactivemongo.bson._
|
||||
|
||||
import lila.db.dsl._
|
||||
import lila.user.User
|
||||
|
||||
object TeamRepo {
|
||||
|
||||
|
@ -13,8 +14,6 @@ object TeamRepo {
|
|||
|
||||
import BSONHandlers._
|
||||
|
||||
type ID = String
|
||||
|
||||
def byOrderedIds(ids: Seq[Team.ID]) = coll.byOrderedIds[Team, Team.ID](ids)(_.id)
|
||||
|
||||
def cursor(
|
||||
|
@ -26,12 +25,15 @@ object TeamRepo {
|
|||
) =
|
||||
coll.find(selector).cursor[Team](readPreference)
|
||||
|
||||
def owned(id: String, createdBy: String): Fu[Option[Team]] =
|
||||
def owned(id: Team.ID, createdBy: User.ID): Fu[Option[Team]] =
|
||||
coll.uno[Team]($id(id) ++ $doc("createdBy" -> createdBy))
|
||||
|
||||
def teamIdsByCreator(userId: String): Fu[List[String]] =
|
||||
def teamIdsByCreator(userId: User.ID): Fu[List[String]] =
|
||||
coll.distinct[String, List]("_id", $doc("createdBy" -> userId).some)
|
||||
|
||||
def creatorOf(teamId: Team.ID): Fu[Option[User.ID]] =
|
||||
coll.primitiveOne[User.ID]($id(teamId), "_id")
|
||||
|
||||
def name(id: String): Fu[Option[String]] =
|
||||
coll.primitiveOne[String]($id(id), "name")
|
||||
|
||||
|
|
Loading…
Reference in New Issue