mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-11-03 20:15:59 +01:00 
			
		
		
		
	(refs #374)Upgrading to Scalatra 2.3 and Slick 2.1.
Some compilation errors in Slick code are remaining.
This commit is contained in:
		@@ -8,8 +8,8 @@ object MyBuild extends Build {
 | 
				
			|||||||
  val Organization = "jp.sf.amateras"
 | 
					  val Organization = "jp.sf.amateras"
 | 
				
			||||||
  val Name = "gitbucket"
 | 
					  val Name = "gitbucket"
 | 
				
			||||||
  val Version = "0.0.1"
 | 
					  val Version = "0.0.1"
 | 
				
			||||||
  val ScalaVersion = "2.10.3"
 | 
					  val ScalaVersion = "2.11.1"
 | 
				
			||||||
  val ScalatraVersion = "2.2.1"
 | 
					  val ScalatraVersion = "2.3.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  lazy val project = Project (
 | 
					  lazy val project = Project (
 | 
				
			||||||
    "gitbucket",
 | 
					    "gitbucket",
 | 
				
			||||||
@@ -30,15 +30,15 @@ object MyBuild extends Build {
 | 
				
			|||||||
        "org.scalatra" %% "scalatra" % ScalatraVersion,
 | 
					        "org.scalatra" %% "scalatra" % ScalatraVersion,
 | 
				
			||||||
        "org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
 | 
					        "org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
 | 
				
			||||||
        "org.scalatra" %% "scalatra-json" % ScalatraVersion,
 | 
					        "org.scalatra" %% "scalatra-json" % ScalatraVersion,
 | 
				
			||||||
        "org.json4s" %% "json4s-jackson" % "3.2.5",
 | 
					        "org.json4s" %% "json4s-jackson" % "3.2.10",
 | 
				
			||||||
        "jp.sf.amateras" %% "scalatra-forms" % "0.0.14",
 | 
					        "jp.sf.amateras" %% "scalatra-forms" % "0.1.0",
 | 
				
			||||||
        "commons-io" % "commons-io" % "2.4",
 | 
					        "commons-io" % "commons-io" % "2.4",
 | 
				
			||||||
        "org.pegdown" % "pegdown" % "1.4.1",
 | 
					        "org.pegdown" % "pegdown" % "1.4.1",
 | 
				
			||||||
        "org.apache.commons" % "commons-compress" % "1.5",
 | 
					        "org.apache.commons" % "commons-compress" % "1.5",
 | 
				
			||||||
        "org.apache.commons" % "commons-email" % "1.3.1",
 | 
					        "org.apache.commons" % "commons-email" % "1.3.1",
 | 
				
			||||||
        "org.apache.httpcomponents" % "httpclient" % "4.3",
 | 
					        "org.apache.httpcomponents" % "httpclient" % "4.3",
 | 
				
			||||||
        "org.apache.sshd" % "apache-sshd" % "0.11.0",
 | 
					        "org.apache.sshd" % "apache-sshd" % "0.11.0",
 | 
				
			||||||
        "com.typesafe.slick" %% "slick" % "2.0.2",
 | 
					        "com.typesafe.slick" %% "slick" % "2.1.0-RC3",
 | 
				
			||||||
        "org.mozilla" % "rhino" % "1.7R4",
 | 
					        "org.mozilla" % "rhino" % "1.7R4",
 | 
				
			||||||
        "com.novell.ldap" % "jldap" % "2009-10-07",
 | 
					        "com.novell.ldap" % "jldap" % "2009-10-07",
 | 
				
			||||||
        "org.quartz-scheduler" % "quartz" % "2.2.1",
 | 
					        "org.quartz-scheduler" % "quartz" % "2.2.1",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,8 +24,9 @@ abstract class ControllerBase extends ScalatraFilter
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  implicit val jsonFormats = DefaultFormats
 | 
					  implicit val jsonFormats = DefaultFormats
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Don't set content type via Accept header.
 | 
					// TODO Scala 2.11
 | 
				
			||||||
  override def format(implicit request: HttpServletRequest) = ""
 | 
					//  // Don't set content type via Accept header.
 | 
				
			||||||
 | 
					//  override def format(implicit request: HttpServletRequest) = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit = try {
 | 
					  override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit = try {
 | 
				
			||||||
    val httpRequest  = request.asInstanceOf[HttpServletRequest]
 | 
					    val httpRequest  = request.asInstanceOf[HttpServletRequest]
 | 
				
			||||||
@@ -125,11 +126,13 @@ abstract class ControllerBase extends ScalatraFilter
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  override def fullUrl(path: String, params: Iterable[(String, Any)] = Iterable.empty,
 | 
					  // TODO Scala 2.11
 | 
				
			||||||
                       includeContextPath: Boolean = true, includeServletPath: Boolean = true)
 | 
					  override def url(path: String, params: Iterable[(String, Any)] = Iterable.empty,
 | 
				
			||||||
                      (implicit request: HttpServletRequest, response: HttpServletResponse) =
 | 
					                   includeContextPath: Boolean = true, includeServletPath: Boolean = true,
 | 
				
			||||||
 | 
					                   absolutize: Boolean = true, withSessionId: Boolean = true)
 | 
				
			||||||
 | 
					                  (implicit request: HttpServletRequest, response: HttpServletResponse): String =
 | 
				
			||||||
    if (path.startsWith("http")) path
 | 
					    if (path.startsWith("http")) path
 | 
				
			||||||
    else baseUrl + url(path, params, false, false, false)
 | 
					    else baseUrl + super.url(path, params, false, false, false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,16 +75,16 @@ trait AccountService {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def getAccountByUserName(userName: String, includeRemoved: Boolean = false)(implicit s: Session): Option[Account] =
 | 
					  def getAccountByUserName(userName: String, includeRemoved: Boolean = false)(implicit s: Session): Option[Account] =
 | 
				
			||||||
    Accounts filter(t => (t.userName is userName.bind) && (t.removed is false.bind, !includeRemoved)) firstOption
 | 
					    Accounts filter(t => (t.userName === userName.bind) && (t.removed is false.bind, !includeRemoved)) firstOption
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def getAccountByMailAddress(mailAddress: String, includeRemoved: Boolean = false)(implicit s: Session): Option[Account] =
 | 
					  def getAccountByMailAddress(mailAddress: String, includeRemoved: Boolean = false)(implicit s: Session): Option[Account] =
 | 
				
			||||||
    Accounts filter(t => (t.mailAddress.toLowerCase is mailAddress.toLowerCase.bind) && (t.removed is false.bind, !includeRemoved)) firstOption
 | 
					    Accounts filter(t => (t.mailAddress.toLowerCase === mailAddress.toLowerCase.bind) && (t.removed is false.bind, !includeRemoved)) firstOption
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def getAllUsers(includeRemoved: Boolean = true)(implicit s: Session): List[Account] =
 | 
					  def getAllUsers(includeRemoved: Boolean = true)(implicit s: Session): List[Account] =
 | 
				
			||||||
    if(includeRemoved){
 | 
					    if(includeRemoved){
 | 
				
			||||||
      Accounts sortBy(_.userName) list
 | 
					      Accounts sortBy(_.userName) list
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      Accounts filter (_.removed is false.bind) sortBy(_.userName) list
 | 
					      Accounts filter (_.removed === false.bind) sortBy(_.userName) list
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def createAccount(userName: String, password: String, fullName: String, mailAddress: String, isAdmin: Boolean, url: Option[String])
 | 
					  def createAccount(userName: String, password: String, fullName: String, mailAddress: String, isAdmin: Boolean, url: Option[String])
 | 
				
			||||||
@@ -105,7 +105,7 @@ trait AccountService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  def updateAccount(account: Account)(implicit s: Session): Unit =
 | 
					  def updateAccount(account: Account)(implicit s: Session): Unit =
 | 
				
			||||||
    Accounts
 | 
					    Accounts
 | 
				
			||||||
      .filter { a =>  a.userName is account.userName.bind }
 | 
					      .filter { a =>  a.userName === account.userName.bind }
 | 
				
			||||||
      .map    { a => (a.password, a.fullName, a.mailAddress, a.isAdmin, a.url.?, a.registeredDate, a.updatedDate, a.lastLoginDate.?, a.removed) }
 | 
					      .map    { a => (a.password, a.fullName, a.mailAddress, a.isAdmin, a.url.?, a.registeredDate, a.updatedDate, a.lastLoginDate.?, a.removed) }
 | 
				
			||||||
      .update (
 | 
					      .update (
 | 
				
			||||||
        account.password,
 | 
					        account.password,
 | 
				
			||||||
@@ -119,10 +119,10 @@ trait AccountService {
 | 
				
			|||||||
        account.isRemoved)
 | 
					        account.isRemoved)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def updateAvatarImage(userName: String, image: Option[String])(implicit s: Session): Unit =
 | 
					  def updateAvatarImage(userName: String, image: Option[String])(implicit s: Session): Unit =
 | 
				
			||||||
    Accounts.filter(_.userName is userName.bind).map(_.image.?).update(image)
 | 
					    Accounts.filter(_.userName === userName.bind).map(_.image.?).update(image)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def updateLastLoginDate(userName: String)(implicit s: Session): Unit =
 | 
					  def updateLastLoginDate(userName: String)(implicit s: Session): Unit =
 | 
				
			||||||
    Accounts.filter(_.userName is userName.bind).map(_.lastLoginDate).update(currentDate)
 | 
					    Accounts.filter(_.userName === userName.bind).map(_.lastLoginDate).update(currentDate)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def createGroup(groupName: String, url: Option[String])(implicit s: Session): Unit =
 | 
					  def createGroup(groupName: String, url: Option[String])(implicit s: Session): Unit =
 | 
				
			||||||
    Accounts insert Account(
 | 
					    Accounts insert Account(
 | 
				
			||||||
@@ -140,10 +140,10 @@ trait AccountService {
 | 
				
			|||||||
      isRemoved      = false)
 | 
					      isRemoved      = false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def updateGroup(groupName: String, url: Option[String], removed: Boolean)(implicit s: Session): Unit =
 | 
					  def updateGroup(groupName: String, url: Option[String], removed: Boolean)(implicit s: Session): Unit =
 | 
				
			||||||
    Accounts.filter(_.userName is groupName.bind).map(t => t.url.? -> t.removed).update(url, removed)
 | 
					    Accounts.filter(_.userName === groupName.bind).map(t => t.url.? -> t.removed).update(url, removed)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def updateGroupMembers(groupName: String, members: List[(String, Boolean)])(implicit s: Session): Unit = {
 | 
					  def updateGroupMembers(groupName: String, members: List[(String, Boolean)])(implicit s: Session): Unit = {
 | 
				
			||||||
    GroupMembers.filter(_.groupName is groupName.bind).delete
 | 
					    GroupMembers.filter(_.groupName === groupName.bind).delete
 | 
				
			||||||
    members.foreach { case (userName, isManager) =>
 | 
					    members.foreach { case (userName, isManager) =>
 | 
				
			||||||
      GroupMembers insert GroupMember (groupName, userName, isManager)
 | 
					      GroupMembers insert GroupMember (groupName, userName, isManager)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -151,21 +151,21 @@ trait AccountService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  def getGroupMembers(groupName: String)(implicit s: Session): List[GroupMember] =
 | 
					  def getGroupMembers(groupName: String)(implicit s: Session): List[GroupMember] =
 | 
				
			||||||
    GroupMembers
 | 
					    GroupMembers
 | 
				
			||||||
      .filter(_.groupName is groupName.bind)
 | 
					      .filter(_.groupName === groupName.bind)
 | 
				
			||||||
      .sortBy(_.userName)
 | 
					      .sortBy(_.userName)
 | 
				
			||||||
      .list
 | 
					      .list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def getGroupsByUserName(userName: String)(implicit s: Session): List[String] =
 | 
					  def getGroupsByUserName(userName: String)(implicit s: Session): List[String] =
 | 
				
			||||||
    GroupMembers
 | 
					    GroupMembers
 | 
				
			||||||
      .filter(_.userName is userName.bind)
 | 
					      .filter(_.userName === userName.bind)
 | 
				
			||||||
      .sortBy(_.groupName)
 | 
					      .sortBy(_.groupName)
 | 
				
			||||||
      .map(_.groupName)
 | 
					      .map(_.groupName)
 | 
				
			||||||
      .list
 | 
					      .list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def removeUserRelatedData(userName: String)(implicit s: Session): Unit = {
 | 
					  def removeUserRelatedData(userName: String)(implicit s: Session): Unit = {
 | 
				
			||||||
    GroupMembers.filter(_.userName is userName.bind).delete
 | 
					    GroupMembers.filter(_.userName === userName.bind).delete
 | 
				
			||||||
    Collaborators.filter(_.collaboratorName is userName.bind).delete
 | 
					    Collaborators.filter(_.collaboratorName === userName.bind).delete
 | 
				
			||||||
    Repositories.filter(_.userName is userName.bind).delete
 | 
					    Repositories.filter(_.userName === userName.bind).delete
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,9 +11,9 @@ trait ActivityService {
 | 
				
			|||||||
      .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName))
 | 
					      .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName))
 | 
				
			||||||
      .filter { case (t1, t2) =>
 | 
					      .filter { case (t1, t2) =>
 | 
				
			||||||
        if(isPublic){
 | 
					        if(isPublic){
 | 
				
			||||||
          (t1.activityUserName is activityUserName.bind) && (t2.isPrivate is false.bind)
 | 
					          (t1.activityUserName === activityUserName.bind) && (t2.isPrivate === false.bind)
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          (t1.activityUserName is activityUserName.bind)
 | 
					          (t1.activityUserName === activityUserName.bind)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      .sortBy { case (t1, t2) => t1.activityId desc }
 | 
					      .sortBy { case (t1, t2) => t1.activityId desc }
 | 
				
			||||||
@@ -24,7 +24,7 @@ trait ActivityService {
 | 
				
			|||||||
  def getRecentActivities()(implicit s: Session): List[Activity] =
 | 
					  def getRecentActivities()(implicit s: Session): List[Activity] =
 | 
				
			||||||
    Activities
 | 
					    Activities
 | 
				
			||||||
      .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName))
 | 
					      .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName))
 | 
				
			||||||
      .filter { case (t1, t2) =>  t2.isPrivate is false.bind }
 | 
					      .filter { case (t1, t2) =>  t2.isPrivate === false.bind }
 | 
				
			||||||
      .sortBy { case (t1, t2) => t1.activityId desc }
 | 
					      .sortBy { case (t1, t2) => t1.activityId desc }
 | 
				
			||||||
      .map    { case (t1, t2) => t1 }
 | 
					      .map    { case (t1, t2) => t1 }
 | 
				
			||||||
      .take(30)
 | 
					      .take(30)
 | 
				
			||||||
@@ -33,7 +33,7 @@ trait ActivityService {
 | 
				
			|||||||
  def getRecentActivitiesByOwners(owners : Set[String])(implicit s: Session): List[Activity] =
 | 
					  def getRecentActivitiesByOwners(owners : Set[String])(implicit s: Session): List[Activity] =
 | 
				
			||||||
    Activities
 | 
					    Activities
 | 
				
			||||||
      .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName))
 | 
					      .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName))
 | 
				
			||||||
      .filter { case (t1, t2) => (t2.isPrivate is false.bind) || (t2.userName inSetBind owners) }
 | 
					      .filter { case (t1, t2) => (t2.isPrivate === false.bind) || (t2.userName inSetBind owners) }
 | 
				
			||||||
      .sortBy { case (t1, t2) => t1.activityId desc }
 | 
					      .sortBy { case (t1, t2) => t1.activityId desc }
 | 
				
			||||||
      .map    { case (t1, t2) => t1 }
 | 
					      .map    { case (t1, t2) => t1 }
 | 
				
			||||||
      .take(30)
 | 
					      .take(30)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -166,13 +166,13 @@ trait IssuesService {
 | 
				
			|||||||
          .getOrElse (repos)
 | 
					          .getOrElse (repos)
 | 
				
			||||||
          .map { case (owner, repository) => t1.byRepository(owner, repository) }
 | 
					          .map { case (owner, repository) => t1.byRepository(owner, repository) }
 | 
				
			||||||
          .foldLeft[Column[Boolean]](false) ( _ || _ ) &&
 | 
					          .foldLeft[Column[Boolean]](false) ( _ || _ ) &&
 | 
				
			||||||
      (t1.closed           is (condition.state == "closed").bind) &&
 | 
					      (t1.closed           === (condition.state == "closed").bind) &&
 | 
				
			||||||
      (t1.milestoneId      is condition.milestoneId.get.get.bind, condition.milestoneId.flatten.isDefined) &&
 | 
					      (t1.milestoneId      === condition.milestoneId.get.get.bind, condition.milestoneId.flatten.isDefined) &&
 | 
				
			||||||
      (t1.milestoneId      isNull, condition.milestoneId == Some(None)) &&
 | 
					      (t1.milestoneId      isEmpty, condition.milestoneId == Some(None)) &&
 | 
				
			||||||
      (t1.assignedUserName is filterUser("assigned").bind, filterUser.get("assigned").isDefined) &&
 | 
					      (t1.assignedUserName === filterUser("assigned").bind, filterUser.get("assigned").isDefined) &&
 | 
				
			||||||
      (t1.openedUserName   is filterUser("created_by").bind, filterUser.get("created_by").isDefined) &&
 | 
					      (t1.openedUserName   === filterUser("created_by").bind, filterUser.get("created_by").isDefined) &&
 | 
				
			||||||
      (t1.openedUserName   isNot filterUser("not_created_by").bind, filterUser.get("not_created_by").isDefined) &&
 | 
					      (t1.openedUserName   =!= filterUser("not_created_by").bind, filterUser.get("not_created_by").isDefined) &&
 | 
				
			||||||
      (t1.pullRequest      is true.bind, onlyPullRequest) &&
 | 
					      (t1.pullRequest      === true.bind, onlyPullRequest) &&
 | 
				
			||||||
      (IssueLabels filter { t2 =>
 | 
					      (IssueLabels filter { t2 =>
 | 
				
			||||||
        (t2.byIssue(t1.userName, t1.repositoryName, t1.issueId)) &&
 | 
					        (t2.byIssue(t1.userName, t1.repositoryName, t1.issueId)) &&
 | 
				
			||||||
        (t2.labelId in
 | 
					        (t2.labelId in
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,9 +26,9 @@ trait PullRequestService { self: IssuesService =>
 | 
				
			|||||||
    PullRequests
 | 
					    PullRequests
 | 
				
			||||||
      .innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) }
 | 
					      .innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) }
 | 
				
			||||||
      .filter { case (t1, t2) =>
 | 
					      .filter { case (t1, t2) =>
 | 
				
			||||||
        (t2.closed         is closed.bind) &&
 | 
					        (t2.closed         === closed.bind) &&
 | 
				
			||||||
        (t1.userName       is owner.get.bind, owner.isDefined) &&
 | 
					        (t1.userName       === owner.get.bind, owner.isDefined) &&
 | 
				
			||||||
        (t1.repositoryName is repository.get.bind, repository.isDefined)
 | 
					        (t1.repositoryName === repository.get.bind, repository.isDefined)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      .groupBy { case (t1, t2) => t2.openedUserName }
 | 
					      .groupBy { case (t1, t2) => t2.openedUserName }
 | 
				
			||||||
      .map { case (userName, t) => userName -> t.length }
 | 
					      .map { case (userName, t) => userName -> t.length }
 | 
				
			||||||
@@ -55,10 +55,10 @@ trait PullRequestService { self: IssuesService =>
 | 
				
			|||||||
    PullRequests
 | 
					    PullRequests
 | 
				
			||||||
      .innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) }
 | 
					      .innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) }
 | 
				
			||||||
      .filter { case (t1, t2) =>
 | 
					      .filter { case (t1, t2) =>
 | 
				
			||||||
        (t1.requestUserName       is userName.bind) &&
 | 
					        (t1.requestUserName       === userName.bind) &&
 | 
				
			||||||
        (t1.requestRepositoryName is repositoryName.bind) &&
 | 
					        (t1.requestRepositoryName === repositoryName.bind) &&
 | 
				
			||||||
        (t1.requestBranch         is branch.bind) &&
 | 
					        (t1.requestBranch         === branch.bind) &&
 | 
				
			||||||
        (t2.closed                is closed.bind)
 | 
					        (t2.closed                === closed.bind)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      .map { case (t1, t2) => t1 }
 | 
					      .map { case (t1, t2) => t1 }
 | 
				
			||||||
      .list
 | 
					      .list
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,15 +58,15 @@ trait RepositoryService { self: AccountService =>
 | 
				
			|||||||
        val collaborators = Collaborators.filter(_.byRepository(oldUserName, oldRepositoryName)).list
 | 
					        val collaborators = Collaborators.filter(_.byRepository(oldUserName, oldRepositoryName)).list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Repositories.filter { t =>
 | 
					        Repositories.filter { t =>
 | 
				
			||||||
          (t.originUserName is oldUserName.bind) && (t.originRepositoryName is oldRepositoryName.bind)
 | 
					          (t.originUserName === oldUserName.bind) && (t.originRepositoryName === oldRepositoryName.bind)
 | 
				
			||||||
        }.map { t => t.originUserName -> t.originRepositoryName }.update(newUserName, newRepositoryName)
 | 
					        }.map { t => t.originUserName -> t.originRepositoryName }.update(newUserName, newRepositoryName)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Repositories.filter { t =>
 | 
					        Repositories.filter { t =>
 | 
				
			||||||
          (t.parentUserName is oldUserName.bind) && (t.parentRepositoryName is oldRepositoryName.bind)
 | 
					          (t.parentUserName === oldUserName.bind) && (t.parentRepositoryName === oldRepositoryName.bind)
 | 
				
			||||||
        }.map { t => t.originUserName -> t.originRepositoryName }.update(newUserName, newRepositoryName)
 | 
					        }.map { t => t.originUserName -> t.originRepositoryName }.update(newUserName, newRepositoryName)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        PullRequests.filter { t =>
 | 
					        PullRequests.filter { t =>
 | 
				
			||||||
          t.requestRepositoryName is oldRepositoryName.bind
 | 
					          t.requestRepositoryName === oldRepositoryName.bind
 | 
				
			||||||
        }.map { t => t.requestUserName -> t.requestRepositoryName }.update(newUserName, newRepositoryName)
 | 
					        }.map { t => t.requestUserName -> t.requestRepositoryName }.update(newUserName, newRepositoryName)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        deleteRepository(oldUserName, oldRepositoryName)
 | 
					        deleteRepository(oldUserName, oldRepositoryName)
 | 
				
			||||||
@@ -136,7 +136,7 @@ trait RepositoryService { self: AccountService =>
 | 
				
			|||||||
   * @return the list of repository names
 | 
					   * @return the list of repository names
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  def getRepositoryNamesOfUser(userName: String)(implicit s: Session): List[String] =
 | 
					  def getRepositoryNamesOfUser(userName: String)(implicit s: Session): List[String] =
 | 
				
			||||||
    Repositories filter(_.userName is userName.bind) map (_.repositoryName) list
 | 
					    Repositories filter(_.userName === userName.bind) map (_.repositoryName) list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Returns the specified repository information.
 | 
					   * Returns the specified repository information.
 | 
				
			||||||
@@ -150,7 +150,7 @@ trait RepositoryService { self: AccountService =>
 | 
				
			|||||||
    (Repositories filter { t => t.byRepository(userName, repositoryName) } firstOption) map { repository =>
 | 
					    (Repositories filter { t => t.byRepository(userName, repositoryName) } firstOption) map { repository =>
 | 
				
			||||||
      // for getting issue count and pull request count
 | 
					      // for getting issue count and pull request count
 | 
				
			||||||
      val issues = Issues.filter { t =>
 | 
					      val issues = Issues.filter { t =>
 | 
				
			||||||
        t.byRepository(repository.userName, repository.repositoryName) && (t.closed is false.bind)
 | 
					        t.byRepository(repository.userName, repository.repositoryName) && (t.closed === false.bind)
 | 
				
			||||||
      }.map(_.pullRequest).list
 | 
					      }.map(_.pullRequest).list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      new RepositoryInfo(
 | 
					      new RepositoryInfo(
 | 
				
			||||||
@@ -175,8 +175,8 @@ trait RepositoryService { self: AccountService =>
 | 
				
			|||||||
  def getUserRepositories(userName: String, baseUrl: String, withoutPhysicalInfo: Boolean = false)
 | 
					  def getUserRepositories(userName: String, baseUrl: String, withoutPhysicalInfo: Boolean = false)
 | 
				
			||||||
                         (implicit s: Session): List[RepositoryInfo] = {
 | 
					                         (implicit s: Session): List[RepositoryInfo] = {
 | 
				
			||||||
    Repositories.filter { t1 =>
 | 
					    Repositories.filter { t1 =>
 | 
				
			||||||
      (t1.userName is userName.bind) ||
 | 
					      (t1.userName === userName.bind) ||
 | 
				
			||||||
        (Collaborators.filter { t2 => t2.byRepository(t1.userName, t1.repositoryName) && (t2.collaboratorName is userName.bind)} exists)
 | 
					        (Collaborators.filter { t2 => t2.byRepository(t1.userName, t1.repositoryName) && (t2.collaboratorName === userName.bind)} exists)
 | 
				
			||||||
    }.sortBy(_.lastActivityDate desc).list.map{ repository =>
 | 
					    }.sortBy(_.lastActivityDate desc).list.map{ repository =>
 | 
				
			||||||
      new RepositoryInfo(
 | 
					      new RepositoryInfo(
 | 
				
			||||||
        if(withoutPhysicalInfo){
 | 
					        if(withoutPhysicalInfo){
 | 
				
			||||||
@@ -212,13 +212,13 @@ trait RepositoryService { self: AccountService =>
 | 
				
			|||||||
      case Some(x) if(x.isAdmin) => Repositories
 | 
					      case Some(x) if(x.isAdmin) => Repositories
 | 
				
			||||||
      // for Normal Users
 | 
					      // for Normal Users
 | 
				
			||||||
      case Some(x) if(!x.isAdmin) =>
 | 
					      case Some(x) if(!x.isAdmin) =>
 | 
				
			||||||
        Repositories filter { t => (t.isPrivate is false.bind) || (t.userName is x.userName) ||
 | 
					        Repositories filter { t => (t.isPrivate === false.bind) || (t.userName === x.userName) ||
 | 
				
			||||||
          (Collaborators.filter { t2 => t2.byRepository(t.userName, t.repositoryName) && (t2.collaboratorName is x.userName.bind)} exists)
 | 
					          (Collaborators.filter { t2 => t2.byRepository(t.userName, t.repositoryName) && (t2.collaboratorName === x.userName.bind)} exists)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      // for Guests
 | 
					      // for Guests
 | 
				
			||||||
      case None => Repositories filter(_.isPrivate is false.bind)
 | 
					      case None => Repositories filter(_.isPrivate === false.bind)
 | 
				
			||||||
    }).filter { t =>
 | 
					    }).filter { t =>
 | 
				
			||||||
      repositoryUserName.map { userName => t.userName is userName.bind } getOrElse LiteralColumn(true)
 | 
					      repositoryUserName.map { userName => t.userName === userName.bind } getOrElse LiteralColumn(true)
 | 
				
			||||||
    }.sortBy(_.lastActivityDate desc).list.map{ repository =>
 | 
					    }.sortBy(_.lastActivityDate desc).list.map{ repository =>
 | 
				
			||||||
      new RepositoryInfo(
 | 
					      new RepositoryInfo(
 | 
				
			||||||
        if(withoutPhysicalInfo){
 | 
					        if(withoutPhysicalInfo){
 | 
				
			||||||
@@ -307,13 +307,13 @@ trait RepositoryService { self: AccountService =>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  private def getForkedCount(userName: String, repositoryName: String)(implicit s: Session): Int =
 | 
					  private def getForkedCount(userName: String, repositoryName: String)(implicit s: Session): Int =
 | 
				
			||||||
    Query(Repositories.filter { t =>
 | 
					    Query(Repositories.filter { t =>
 | 
				
			||||||
      (t.originUserName is userName.bind) && (t.originRepositoryName is repositoryName.bind)
 | 
					      (t.originUserName === userName.bind) && (t.originRepositoryName === repositoryName.bind)
 | 
				
			||||||
    }.length).first
 | 
					    }.length).first
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def getForkedRepositories(userName: String, repositoryName: String)(implicit s: Session): List[(String, String)] =
 | 
					  def getForkedRepositories(userName: String, repositoryName: String)(implicit s: Session): List[(String, String)] =
 | 
				
			||||||
    Repositories.filter { t =>
 | 
					    Repositories.filter { t =>
 | 
				
			||||||
      (t.originUserName is userName.bind) && (t.originRepositoryName is repositoryName.bind)
 | 
					      (t.originUserName === userName.bind) && (t.originRepositoryName === repositoryName.bind)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .sortBy(_.userName asc).map(t => t.userName -> t.repositoryName).list
 | 
					    .sortBy(_.userName asc).map(t => t.userName -> t.repositoryName).list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@ trait SshKeyService {
 | 
				
			|||||||
    SshKeys insert SshKey(userName = userName, title = title, publicKey = publicKey)
 | 
					    SshKeys insert SshKey(userName = userName, title = title, publicKey = publicKey)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def getPublicKeys(userName: String)(implicit s: Session): List[SshKey] =
 | 
					  def getPublicKeys(userName: String)(implicit s: Session): List[SshKey] =
 | 
				
			||||||
    SshKeys.filter(_.userName is userName.bind).sortBy(_.sshKeyId).list
 | 
					    SshKeys.filter(_.userName === userName.bind).sortBy(_.sshKeyId).list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def deletePublicKey(userName: String, sshKeyId: Int)(implicit s: Session): Unit =
 | 
					  def deletePublicKey(userName: String, sshKeyId: Int)(implicit s: Session): Unit =
 | 
				
			||||||
    SshKeys filter (_.byPrimaryKey(userName, sshKeyId)) delete
 | 
					    SshKeys filter (_.byPrimaryKey(userName, sshKeyId)) delete
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user