diff --git a/src/main/scala/app/RepositorySettingsController.scala b/src/main/scala/app/RepositorySettingsController.scala index 5793293..6647518 100644 --- a/src/main/scala/app/RepositorySettingsController.scala +++ b/src/main/scala/app/RepositorySettingsController.scala @@ -24,7 +24,7 @@ case class OptionsForm(repositoryName: String, description: Option[String], defaultBranch: String, isPrivate: Boolean) val optionsForm = mapping( - "repositoryName" -> trim(label("Description" , text(required, maxlength(40), identifier))), // TODO unique checking + "repositoryName" -> trim(label("Description" , text(required, maxlength(40), identifier, renameRepositoryName))), "description" -> trim(label("Description" , optional(text()))), "defaultBranch" -> trim(label("Default Branch" , text(required, maxlength(100)))), "isPrivate" -> trim(label("Repository Type", boolean())) @@ -209,4 +209,16 @@ } } + /** + * Duplicate check for the rename repository name. + */ + private def renameRepositoryName: Constraint = new Constraint(){ + override def validate(name: String, value: String, params: Map[String, String], messages: Messages): Option[String] = + params.get("repository").filter(_ != value).flatMap { _ => + params.get("owner").flatMap { userName => + getRepositoryNamesOfUser(userName).find(_ == value).map(_ => "Repository already exists.") + } + } + } + } \ No newline at end of file diff --git a/src/main/twirl/settings/options.scala.html b/src/main/twirl/settings/options.scala.html index ed65ed5..5c76578 100644 --- a/src/main/twirl/settings/options.scala.html +++ b/src/main/twirl/settings/options.scala.html @@ -12,6 +12,7 @@