diff --git a/src/main/scala/app/IndexController.scala b/src/main/scala/app/IndexController.scala index 802b9b1..8866795 100644 --- a/src/main/scala/app/IndexController.scala +++ b/src/main/scala/app/IndexController.scala @@ -21,8 +21,8 @@ val loginAccount = context.loginAccount html.index(getRecentActivities(), - getVisibleRepositories(loginAccount, context.baseUrl), - loginAccount.map{ account => getUserRepositories(account.userName, context.baseUrl) }.getOrElse(Nil) + getVisibleRepositories(loginAccount, context.baseUrl, withoutPhysicalInfo = true), + loginAccount.map{ account => getUserRepositories(account.userName, context.baseUrl, withoutPhysicalInfo = true) }.getOrElse(Nil) ) } diff --git a/src/main/scala/service/RepositoryService.scala b/src/main/scala/service/RepositoryService.scala index 49fd102..1cf2858 100644 --- a/src/main/scala/service/RepositoryService.scala +++ b/src/main/scala/service/RepositoryService.scala @@ -155,13 +155,17 @@ } } - def getUserRepositories(userName: String, baseUrl: String): List[RepositoryInfo] = { + def getUserRepositories(userName: String, baseUrl: String, withoutPhysicalInfo: Boolean = false): List[RepositoryInfo] = { Query(Repositories).filter { t1 => (t1.userName is userName.bind) || (Query(Collaborators).filter { t2 => t2.byRepository(t1.userName, t1.repositoryName) && (t2.collaboratorName is userName.bind)} exists) }.sortBy(_.lastActivityDate desc).list.map{ repository => new RepositoryInfo( - JGitUtil.getRepositoryInfo(repository.userName, repository.repositoryName, baseUrl), + if(withoutPhysicalInfo){ + new JGitUtil.RepositoryInfo(repository.userName, repository.repositoryName, baseUrl) + } else { + JGitUtil.getRepositoryInfo(repository.userName, repository.repositoryName, baseUrl) + }, repository, getForkedCount( repository.originUserName.getOrElse(repository.userName), @@ -178,9 +182,12 @@ * @param loginAccount the logged in account * @param baseUrl the base url of this application * @param repositoryUserName the repository owner (if None then returns all repositories which are visible for logged in user) + * @param withoutPhysicalInfo if true then the result does not include physical repository information such as commit count, + * branches and tags * @return the repository information which is sorted in descending order of lastActivityDate. */ - def getVisibleRepositories(loginAccount: Option[Account], baseUrl: String, repositoryUserName: Option[String] = None): List[RepositoryInfo] = { + def getVisibleRepositories(loginAccount: Option[Account], baseUrl: String, repositoryUserName: Option[String] = None, + withoutPhysicalInfo: Boolean = false): List[RepositoryInfo] = { (loginAccount match { // for Administrators case Some(x) if(x.isAdmin) => Query(Repositories) @@ -195,7 +202,11 @@ repositoryUserName.map { userName => t.userName is userName.bind } getOrElse ConstColumn.TRUE }.sortBy(_.lastActivityDate desc).list.map{ repository => new RepositoryInfo( - JGitUtil.getRepositoryInfo(repository.userName, repository.repositoryName, baseUrl), + if(withoutPhysicalInfo){ + new JGitUtil.RepositoryInfo(repository.userName, repository.repositoryName, baseUrl) + } else { + JGitUtil.getRepositoryInfo(repository.userName, repository.repositoryName, baseUrl) + }, repository, getForkedCount( repository.originUserName.getOrElse(repository.userName), diff --git a/src/main/scala/util/JGitUtil.scala b/src/main/scala/util/JGitUtil.scala index 48c4ad7..c68bdbf 100644 --- a/src/main/scala/util/JGitUtil.scala +++ b/src/main/scala/util/JGitUtil.scala @@ -35,7 +35,11 @@ * @param branchList the list of branch names * @param tags the list of tags */ - case class RepositoryInfo(owner: String, name: String, url: String, commitCount: Int, branchList: List[String], tags: List[TagInfo]) + case class RepositoryInfo(owner: String, name: String, url: String, commitCount: Int, branchList: List[String], tags: List[TagInfo]){ + def this(owner: String, name: String, baseUrl: String) = { + this(owner, name, s"${baseUrl}/git/${owner}/${name}.git", 0, Nil, Nil) + } + } /** * The file data for the file list of the repository viewer.