diff --git a/src/main/resources/update/gitbucket-core_4.12.xml b/src/main/resources/update/gitbucket-core_4.12.xml index 1f4b6d9..df5e463 100644 --- a/src/main/resources/update/gitbucket-core_4.12.xml +++ b/src/main/resources/update/gitbucket-core_4.12.xml @@ -3,7 +3,7 @@ - + @@ -18,15 +18,6 @@ - - - - - - - - - diff --git a/src/main/scala/gitbucket/core/model/Release.scala b/src/main/scala/gitbucket/core/model/Release.scala index 3d3b02f..a46afff 100644 --- a/src/main/scala/gitbucket/core/model/Release.scala +++ b/src/main/scala/gitbucket/core/model/Release.scala @@ -6,15 +6,8 @@ import profile.api._ import self._ - lazy val ReleaseId = TableQuery[ReleaseId] lazy val Releases = TableQuery[Releases] - class ReleaseId(tag: Tag) extends Table[(String, String, Int)](tag, "RELEASE_ID") with ReleaseTemplate { - def * = (userName, repositoryName, releaseId) - - def byPrimaryKey(owner: String, repository: String) = byRepository(owner, repository) - } - class Releases(tag_ : Tag) extends Table[Release](tag_, "RELEASE") with ReleaseTemplate { val name = column[String]("NAME") val tag = column[String]("TAG") diff --git a/src/main/scala/gitbucket/core/service/ReleaseService.scala b/src/main/scala/gitbucket/core/service/ReleaseService.scala index dae1eec..f70c1c0 100644 --- a/src/main/scala/gitbucket/core/service/ReleaseService.scala +++ b/src/main/scala/gitbucket/core/service/ReleaseService.scala @@ -55,10 +55,19 @@ def createRelease(repository: RepositoryInfo, name: String, content:Option[String], tag: String, isDraft: Boolean, isPrerelease: Boolean, loginAccount: Account)(implicit context: Context, s: Session): Release = { - val releaseId = insertRelease(repository.owner, repository.name, loginAccount.userName, name, tag, - content, isDraft, isPrerelease) - val release = getRelease(repository.owner, repository.name, releaseId.toString).get - release + Releases insert Release( + userName = repository.owner, + repositoryName = repository.name, + name = name, + tag = tag, + author = loginAccount.userName, + content = content, + isDraft = isDraft, + isPrerelease = isPrerelease, + registeredDate = currentDate, + updatedDate = currentDate + ) + getReleaseByTag(repository.owner, repository.name, tag).get } def getReleases(owner: String, repository: String)(implicit s: Session): List[Release] = { @@ -69,6 +78,10 @@ Releases filter (_.byPrimaryKey(owner, repository, releaseId)) firstOption } + def getReleaseByTag(owner: String, repository: String, tag: String)(implicit s: Session): Option[Release] = { + Releases filter (_.byTag(owner, repository, tag)) firstOption + } + def getRelease(owner: String, repository: String, releaseId: String)(implicit s: Session): Option[Release] = { if (isInteger(releaseId)) getRelease(owner, repository, releaseId.toInt) @@ -80,38 +93,6 @@ releases.map(rel => (rel.tag -> rel)).toMap } - def insertRelease(owner: String, repository: String, loginUser: String, name: String, tag: String, - content: Option[String], isDraft: Boolean, isPrerelease: Boolean)(implicit s: Session): Int = { - // next id number - val id = sql"SELECT RELEASE_ID + 1 FROM RELEASE_ID WHERE USER_NAME = $owner AND REPOSITORY_NAME = $repository FOR UPDATE".as[Int] - .firstOption.getOrElse(1) - Releases insert Release( - owner, - repository, - id, - name, - tag, - loginUser, - content, - isDraft, - isPrerelease, - currentDate, - currentDate - ) - - // increment issue id - if (id > 1){ - ReleaseId - .filter(_.byPrimaryKey(owner, repository)) - .map(_.releaseId) - .update(id) > 0 - }else{ - ReleaseId.insert(owner, repository, id) - } - - id - } - def updateRelease(owner: String, repository: String, releaseId: Int, title: String, content: Option[String])(implicit s: Session): Int = { Releases .filter (_.byPrimaryKey(owner, repository, releaseId))