mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-07 22:15:51 +01:00
Separate milestones from IssuesController / IssuesService.
This commit is contained in:
@@ -51,62 +51,4 @@ trait IssuesService {
|
||||
}.map(_.issueId).update(id) > 0
|
||||
} get
|
||||
|
||||
def createMilestone(owner: String, repository: String,
|
||||
title: String, description: Option[String], dueDate: Option[java.util.Date]) =
|
||||
Milestones.autoInc insert (owner, repository, title, description, dueDate, None)
|
||||
|
||||
def updateMilestone(milestone: Milestone): Unit =
|
||||
Query(Milestones)
|
||||
.filter { m => (m.userName is milestone.userName.bind) && (m.repositoryName is milestone.repositoryName.bind) && (m.milestoneId is milestone.milestoneId.bind)}
|
||||
.map { m => m.title ~ m.description.? ~ m.dueDate.? ~ m.closedDate.? }
|
||||
.update (
|
||||
milestone.title,
|
||||
milestone.description,
|
||||
milestone.dueDate,
|
||||
milestone.closedDate)
|
||||
|
||||
def openMilestone(milestone: Milestone): Unit = updateMilestone(milestone.copy(closedDate = None))
|
||||
|
||||
def closeMilestone(milestone: Milestone): Unit = updateMilestone(milestone.copy(closedDate = Some(currentDate)))
|
||||
|
||||
def deleteMilestone(owner: String, repository: String, milestoneId: Int): Unit = {
|
||||
Query(Issues)
|
||||
.filter { i => (i.userName is owner.bind) && (i.repositoryName is repository.bind) && (i.milestoneId is milestoneId.bind)}
|
||||
.map { i => i.milestoneId.? }
|
||||
.update(None)
|
||||
|
||||
Query(Milestones)
|
||||
.filter { i => (i.userName is owner.bind) && (i.repositoryName is repository.bind) && (i.milestoneId is milestoneId.bind)}
|
||||
.delete
|
||||
}
|
||||
|
||||
def getMilestone(owner: String, repository: String, milestoneId: Int): Option[Milestone] =
|
||||
Query(Milestones)
|
||||
.filter(m => (m.userName is owner.bind) && (m.repositoryName is repository.bind) && (m.milestoneId is milestoneId.bind))
|
||||
.sortBy(_.milestoneId desc)
|
||||
.firstOption
|
||||
|
||||
def getMilestoneIssueCounts(owner: String, repository: String): Map[(Int, Boolean), Int] = {
|
||||
import scala.slick.jdbc.GetResult
|
||||
|
||||
case class IssueCount(milestoneId: Int, closed: Boolean, count: Int)
|
||||
implicit val getIssueCount = GetResult(r => IssueCount(r.<<, r.<<, r.<<))
|
||||
|
||||
sql"""
|
||||
select MILESTONE_ID, CLOSED, COUNT(ISSUE_ID)
|
||||
from ISSUE
|
||||
where USER_NAME = $owner AND REPOSITORY_NAME = $repository AND MILESTONE_ID IS NOT NULL
|
||||
group by USER_NAME, REPOSITORY_NAME, MILESTONE_ID, CLOSED"""
|
||||
.as[IssueCount]
|
||||
.list
|
||||
.map { x => (x.milestoneId, x.closed) -> x.count }
|
||||
.toMap
|
||||
}
|
||||
|
||||
def getMilestones(owner: String, repository: String): List[Milestone] =
|
||||
Query(Milestones)
|
||||
.filter(m => (m.userName is owner.bind) && (m.repositoryName is repository.bind))
|
||||
.sortBy(_.milestoneId desc)
|
||||
.list
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user