preload student light users

pull/5938/head
Thibault Duplessis 2020-01-18 14:10:02 -06:00
parent 2d34ba44ee
commit 496e11e56e
2 changed files with 11 additions and 5 deletions

View File

@ -45,11 +45,15 @@ final class Clas(
}
}
private def preloadStudentUsers(students: List[lila.clas.Student.WithUser]): Unit =
env.user.lightUserApi.preloadUsers(students.map(_.user))
def show(id: String) = Auth { implicit ctx => me =>
isGranted(_.Teacher).??(env.clas.api.clas.isTeacherOf(me, lila.clas.Clas.Id(id))) flatMap {
case true =>
WithClass(me, id) { _ => clas =>
env.clas.api.student.allOfWithUsers(clas) map { students =>
preloadStudentUsers(students)
views.html.clas.clas.showToTeacher(clas, students)
}
}
@ -57,9 +61,10 @@ final class Clas(
env.clas.api.clas.byId(lila.clas.Clas.Id(id)) flatMap {
_ ?? { clas =>
env.clas.api.student.activeOfWithUsers(clas) flatMap { students =>
if (students.exists(_.student is me))
if (students.exists(_.student is me)) {
preloadStudentUsers(students)
Ok(views.html.clas.clas.showToStudent(clas, students)).fuccess
else notFound
} else notFound
}
}
}

View File

@ -23,9 +23,10 @@ final class LightUserApi(
def invalidate = cache invalidate _
def preloadOne = cache preloadOne _
def preloadMany = cache preloadMany _
def preloadUser(user: User) = cache.set(user.id, user.light.some)
def preloadOne = cache preloadOne _
def preloadMany = cache preloadMany _
def preloadUser(user: User) = cache.set(user.id, user.light.some)
def preloadUsers(users: Seq[User]) = users.foreach(preloadUser)
private val cache = cacheApi.sync[User.ID, Option[LightUser]](
name = "user.light",