diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala
index 4ecdf53..38f617d 100644
--- a/src/main/scala/app/IssuesController.scala
+++ b/src/main/scala/app/IssuesController.scala
@@ -148,4 +148,18 @@
}
}
})
+
+ get("/:owner/:repository/issues/milestones/:milestoneId/delete")(writableRepository {
+ val owner = params("owner")
+ val repository = params("repository")
+ val milestoneId = params("milestoneId").toInt
+
+ getMilestone(owner, repository, milestoneId) match {
+ case None => NotFound()
+ case Some(m) => {
+ deleteMilestone(owner, repository, milestoneId)
+ redirect("/%s/%s/issues/milestones".format(owner, repository))
+ }
+ }
+ })
}
\ No newline at end of file
diff --git a/src/main/scala/service/IssuesService.scala b/src/main/scala/service/IssuesService.scala
index 7514819..b7e6666 100644
--- a/src/main/scala/service/IssuesService.scala
+++ b/src/main/scala/service/IssuesService.scala
@@ -65,6 +65,17 @@
milestone.dueDate,
milestone.closedDate)
+ 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))
diff --git a/src/main/twirl/issues/milestones.scala.html b/src/main/twirl/issues/milestones.scala.html
index 3a48444..9fab1ea 100644
--- a/src/main/twirl/issues/milestones.scala.html
+++ b/src/main/twirl/issues/milestones.scala.html
@@ -54,7 +54,7 @@
} else {
Close
}
- Delete
+ Delete
}
Browse issues
@@ -86,6 +86,13 @@
}
+