package service import model._ import service.SystemSettingsService.SystemSettings /** * This service is used for a view helper mainly. * * It may be called many times in one request, so each method stores * its result into the cache which available during a request. */ trait RequestCache { def getSystemSettings()(implicit context: app.Context): SystemSettings = context.cache("system_settings"){ new SystemSettingsService {}.loadSystemSettings() } def getIssue(userName: String, repositoryName: String, issueId: String)(implicit context: app.Context): Option[Issue] = { context.cache(s"issue.${userName}/${repositoryName}#${issueId}"){ new IssuesService {}.getIssue(userName, repositoryName, issueId) } } def getAccountByUserName(userName: String)(implicit context: app.Context): Option[Account] = { context.cache(s"account.${userName}"){ new AccountService {}.getAccountByUserName(userName) } } }