diff --git a/src/main/resources/update/gitbucket-core_4.23.xml b/src/main/resources/update/gitbucket-core_4.23.xml new file mode 100644 index 0000000..4c35534 --- /dev/null +++ b/src/main/resources/update/gitbucket-core_4.23.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/main/scala/gitbucket/core/GitBucketCoreModule.scala b/src/main/scala/gitbucket/core/GitBucketCoreModule.scala index 0fd6742..b81132a 100644 --- a/src/main/scala/gitbucket/core/GitBucketCoreModule.scala +++ b/src/main/scala/gitbucket/core/GitBucketCoreModule.scala @@ -56,5 +56,8 @@ new Version("4.21.2"), new Version("4.22.0", new LiquibaseMigration("update/gitbucket-core_4.22.xml") + ), + new Version("4.23.0", + new LiquibaseMigration("update/gitbucket-core_4.23.xml") ) ) diff --git a/src/main/scala/gitbucket/core/model/Profile.scala b/src/main/scala/gitbucket/core/model/Profile.scala index 7cace80..f9170a4 100644 --- a/src/main/scala/gitbucket/core/model/Profile.scala +++ b/src/main/scala/gitbucket/core/model/Profile.scala @@ -64,7 +64,7 @@ with AccountFederationComponent with ProtectedBranchComponent with DeployKeyComponent - with ReleaseComponent + with ReleaseTagComponent with ReleaseAssetComponent object Profile extends CoreProfile diff --git a/src/main/scala/gitbucket/core/model/Release.scala b/src/main/scala/gitbucket/core/model/Release.scala deleted file mode 100644 index ffd19c8..0000000 --- a/src/main/scala/gitbucket/core/model/Release.scala +++ /dev/null @@ -1,34 +0,0 @@ -package gitbucket.core.model - -trait ReleaseComponent extends TemplateComponent { - self: Profile => - - import profile.api._ - import self._ - - lazy val Releases = TableQuery[Releases] - - class Releases(tag_ : Tag) extends Table[Release](tag_, "RELEASE") with BasicTemplate { - val name = column[String]("NAME") - val tag = column[String]("TAG") - val author = column[String]("AUTHOR") - val content = column[Option[String]]("CONTENT") - val registeredDate = column[java.util.Date]("REGISTERED_DATE") - val updatedDate = column[java.util.Date]("UPDATED_DATE") - - def * = (userName, repositoryName, name, tag, author, content, registeredDate, updatedDate) <> (Release.tupled, Release.unapply) - def byPrimaryKey(owner: String, repository: String, tag: String) = byTag(owner, repository, tag) - def byTag(owner: String, repository: String, tag: String) = byRepository(owner, repository) && (this.tag === tag.bind) - } -} - -case class Release( - userName: String, - repositoryName: String, - name: String, - tag: String, - author: String, - content: Option[String], - registeredDate: java.util.Date, - updatedDate: java.util.Date -) diff --git a/src/main/scala/gitbucket/core/model/ReleaseAsset.scala b/src/main/scala/gitbucket/core/model/ReleaseAsset.scala new file mode 100644 index 0000000..7bd6697 --- /dev/null +++ b/src/main/scala/gitbucket/core/model/ReleaseAsset.scala @@ -0,0 +1,40 @@ +package gitbucket.core.model + +import java.util.Date + +trait ReleaseAssetComponent extends TemplateComponent { + self: Profile => + + import profile.api._ + import self._ + + lazy val ReleaseAssets = TableQuery[ReleaseAssets] + + class ReleaseAssets(tag_ : Tag) extends Table[ReleaseAsset](tag_, "RELEASE_ASSET") with BasicTemplate { + val tag = column[String]("TAG") + val releaseAssetId = column[Int]("RELEASE_ASSET_ID", O AutoInc) + val fileName = column[String]("FILE_NAME") + val label = column[String]("LABEL") + val size = column[Long]("SIZE") + val uploader = column[String]("UPLOADER") + val registeredDate = column[Date]("REGISTERED_DATE") + val updatedDate = column[Date]("UPDATED_DATE") + + def * = (userName, repositoryName, tag, releaseAssetId, fileName, label, size, uploader, registeredDate, updatedDate) <> (ReleaseAsset.tupled, ReleaseAsset.unapply) + def byPrimaryKey(owner: String, repository: String, tag: String, fileName: String) = byTag(owner, repository, tag) && (this.fileName === fileName.bind) + def byTag(owner: String, repository: String, tag: String) = byRepository(owner, repository) && (this.tag === tag.bind) + } +} + +case class ReleaseAsset( + userName: String, + repositoryName: String, + tag: String, + releaseAssetId: Int = 0, + fileName: String, + label: String, + size: Long, + uploader: String, + registeredDate: Date, + updatedDate: Date +) diff --git a/src/main/scala/gitbucket/core/model/ReleaseTag.scala b/src/main/scala/gitbucket/core/model/ReleaseTag.scala new file mode 100644 index 0000000..d2c92a2 --- /dev/null +++ b/src/main/scala/gitbucket/core/model/ReleaseTag.scala @@ -0,0 +1,34 @@ +package gitbucket.core.model + +trait ReleaseTagComponent extends TemplateComponent { + self: Profile => + + import profile.api._ + import self._ + + lazy val ReleaseTags = TableQuery[ReleaseTags] + + class ReleaseTags(tag_ : Tag) extends Table[ReleaseTag](tag_, "RELEASE_TAG") with BasicTemplate { + val name = column[String]("NAME") + val tag = column[String]("TAG") + val author = column[String]("AUTHOR") + val content = column[Option[String]]("CONTENT") + val registeredDate = column[java.util.Date]("REGISTERED_DATE") + val updatedDate = column[java.util.Date]("UPDATED_DATE") + + def * = (userName, repositoryName, name, tag, author, content, registeredDate, updatedDate) <> (ReleaseTag.tupled, ReleaseTag.unapply) + def byPrimaryKey(owner: String, repository: String, tag: String) = byTag(owner, repository, tag) + def byTag(owner: String, repository: String, tag: String) = byRepository(owner, repository) && (this.tag === tag.bind) + } +} + +case class ReleaseTag( + userName: String, + repositoryName: String, + name: String, + tag: String, + author: String, + content: Option[String], + registeredDate: java.util.Date, + updatedDate: java.util.Date +) diff --git a/src/main/scala/gitbucket/core/model/ReleasesAsset.scala b/src/main/scala/gitbucket/core/model/ReleasesAsset.scala deleted file mode 100644 index 7bd6697..0000000 --- a/src/main/scala/gitbucket/core/model/ReleasesAsset.scala +++ /dev/null @@ -1,40 +0,0 @@ -package gitbucket.core.model - -import java.util.Date - -trait ReleaseAssetComponent extends TemplateComponent { - self: Profile => - - import profile.api._ - import self._ - - lazy val ReleaseAssets = TableQuery[ReleaseAssets] - - class ReleaseAssets(tag_ : Tag) extends Table[ReleaseAsset](tag_, "RELEASE_ASSET") with BasicTemplate { - val tag = column[String]("TAG") - val releaseAssetId = column[Int]("RELEASE_ASSET_ID", O AutoInc) - val fileName = column[String]("FILE_NAME") - val label = column[String]("LABEL") - val size = column[Long]("SIZE") - val uploader = column[String]("UPLOADER") - val registeredDate = column[Date]("REGISTERED_DATE") - val updatedDate = column[Date]("UPDATED_DATE") - - def * = (userName, repositoryName, tag, releaseAssetId, fileName, label, size, uploader, registeredDate, updatedDate) <> (ReleaseAsset.tupled, ReleaseAsset.unapply) - def byPrimaryKey(owner: String, repository: String, tag: String, fileName: String) = byTag(owner, repository, tag) && (this.fileName === fileName.bind) - def byTag(owner: String, repository: String, tag: String) = byRepository(owner, repository) && (this.tag === tag.bind) - } -} - -case class ReleaseAsset( - userName: String, - repositoryName: String, - tag: String, - releaseAssetId: Int = 0, - fileName: String, - label: String, - size: Long, - uploader: String, - registeredDate: Date, - updatedDate: Date -) diff --git a/src/main/scala/gitbucket/core/service/ReleaseService.scala b/src/main/scala/gitbucket/core/service/ReleaseService.scala index b1e8253..26941d3 100644 --- a/src/main/scala/gitbucket/core/service/ReleaseService.scala +++ b/src/main/scala/gitbucket/core/service/ReleaseService.scala @@ -1,7 +1,7 @@ package gitbucket.core.service import gitbucket.core.controller.Context -import gitbucket.core.model.{Account, Release, ReleaseAsset} +import gitbucket.core.model.{Account, ReleaseTag, ReleaseAsset} import gitbucket.core.model.Profile.profile.blockingApi._ import gitbucket.core.model.Profile._ import gitbucket.core.model.Profile.dateColumnType @@ -27,7 +27,7 @@ ReleaseAssets.filter(x => x.byTag(owner, repository, tag)).list } - def getReleaseAssetsMap(owner: String, repository: String)(implicit s: Session): Map[Release, Seq[ReleaseAsset]] = { + def getReleaseAssetsMap(owner: String, repository: String)(implicit s: Session): Map[ReleaseTag, Seq[ReleaseAsset]] = { val releases = getReleases(owner, repository) releases.map(rel => (rel -> getReleaseAssets(owner, repository, rel.tag))).toMap } @@ -42,7 +42,7 @@ def createRelease(owner: String, repository: String, name: String, content: Option[String], tag: String, loginAccount: Account)(implicit context: Context, s: Session): Int = { - Releases insert Release( + ReleaseTags insert ReleaseTag( userName = owner, repositoryName = repository, name = name, @@ -54,13 +54,13 @@ ) } - def getReleases(owner: String, repository: String)(implicit s: Session): Seq[Release] = { - Releases.filter(x => x.byRepository(owner, repository)).list + def getReleases(owner: String, repository: String)(implicit s: Session): Seq[ReleaseTag] = { + ReleaseTags.filter(x => x.byRepository(owner, repository)).list } - def getRelease(owner: String, repository: String, tag: String)(implicit s: Session): Option[Release] = { + def getRelease(owner: String, repository: String, tag: String)(implicit s: Session): Option[ReleaseTag] = { //Releases filter (_.byPrimaryKey(owner, repository, releaseId)) firstOption - Releases filter (_.byTag(owner, repository, tag)) firstOption + ReleaseTags filter (_.byTag(owner, repository, tag)) firstOption } // def getReleaseByTag(owner: String, repository: String, tag: String)(implicit s: Session): Option[Release] = { @@ -74,7 +74,7 @@ // } def updateRelease(owner: String, repository: String, tag: String, title: String, content: Option[String])(implicit s: Session): Int = { - Releases + ReleaseTags .filter (_.byPrimaryKey(owner, repository, tag)) .map { t => (t.name, t.content, t.updatedDate) } .update (title, content, currentDate) @@ -82,6 +82,6 @@ def deleteRelease(owner: String, repository: String, tag: String)(implicit s: Session): Unit = { deleteReleaseAssets(owner, repository, tag) - Releases filter (_.byPrimaryKey(owner, repository, tag)) delete + ReleaseTags filter (_.byPrimaryKey(owner, repository, tag)) delete } } diff --git a/src/main/scala/gitbucket/core/service/RepositoryService.scala b/src/main/scala/gitbucket/core/service/RepositoryService.scala index fd7da44..f8ddf17 100644 --- a/src/main/scala/gitbucket/core/service/RepositoryService.scala +++ b/src/main/scala/gitbucket/core/service/RepositoryService.scala @@ -3,7 +3,7 @@ import gitbucket.core.controller.Context import gitbucket.core.util._ import gitbucket.core.util.SyntaxSugars._ -import gitbucket.core.model.{Account, Collaborator, Repository, RepositoryOptions, Role, Release} +import gitbucket.core.model.{Account, Collaborator, Repository, RepositoryOptions, Role, ReleaseTag} import gitbucket.core.model.Profile._ import gitbucket.core.model.Profile.profile.blockingApi._ import gitbucket.core.model.Profile.dateColumnType @@ -77,7 +77,7 @@ val protectedBranches = ProtectedBranches .filter(_.byRepository(oldUserName, oldRepositoryName)).list val protectedBranchContexts = ProtectedBranchContexts.filter(_.byRepository(oldUserName, oldRepositoryName)).list val deployKeys = DeployKeys .filter(_.byRepository(oldUserName, oldRepositoryName)).list - val releases = Releases .filter(_.byRepository(oldUserName, oldRepositoryName)).list + val releases = ReleaseTags .filter(_.byRepository(oldUserName, oldRepositoryName)).list val releaseAssets = ReleaseAssets .filter(_.byRepository(oldUserName, oldRepositoryName)).list Repositories.filter { t => @@ -124,7 +124,7 @@ ProtectedBranches .insertAll(protectedBranches.map(_.copy(userName = newUserName, repositoryName = newRepositoryName)) :_*) ProtectedBranchContexts.insertAll(protectedBranchContexts.map(_.copy(userName = newUserName, repositoryName = newRepositoryName)) :_*) DeployKeys .insertAll(deployKeys .map(_.copy(userName = newUserName, repositoryName = newRepositoryName)) :_*) - Releases .insertAll(releases .map(_.copy(userName = newUserName, repositoryName = newRepositoryName)) :_*) + ReleaseTags .insertAll(releases .map(_.copy(userName = newUserName, repositoryName = newRepositoryName)) :_*) ReleaseAssets .insertAll(releaseAssets .map(_.copy(userName = newUserName, repositoryName = newRepositoryName)) :_*) // Update source repository of pull requests @@ -179,8 +179,8 @@ RepositoryWebHooks .filter(_.byRepository(userName, repositoryName)).delete RepositoryWebHookEvents .filter(_.byRepository(userName, repositoryName)).delete DeployKeys .filter(_.byRepository(userName, repositoryName)).delete - ReleaseAssets .filter(_.byRepository(userName, repositoryName)).delete - Releases .filter(_.byRepository(userName, repositoryName)).delete + ReleaseAssets .filter(_.byRepository(userName, repositoryName)).delete + ReleaseTags .filter(_.byRepository(userName, repositoryName)).delete Repositories .filter(_.byRepository(userName, repositoryName)).delete // Update ORIGIN_USER_NAME and ORIGIN_REPOSITORY_NAME diff --git a/src/main/twirl/gitbucket/core/releases/form.scala.html b/src/main/twirl/gitbucket/core/releases/form.scala.html index cdd0aca..6fd8be2 100644 --- a/src/main/twirl/gitbucket/core/releases/form.scala.html +++ b/src/main/twirl/gitbucket/core/releases/form.scala.html @@ -1,6 +1,6 @@ @(repository: gitbucket.core.service.RepositoryService.RepositoryInfo, tag: gitbucket.core.util.JGitUtil.TagInfo, - release: Option[(gitbucket.core.model.Release, Seq[gitbucket.core.model.ReleaseAsset])])(implicit context: gitbucket.core.controller.Context) + release: Option[(gitbucket.core.model.ReleaseTag, Seq[gitbucket.core.model.ReleaseAsset])])(implicit context: gitbucket.core.controller.Context) @import gitbucket.core.view.helpers @gitbucket.core.html.main(s"New Release - ${repository.owner}/${repository.name}", Some(repository)){ @gitbucket.core.html.menu("releases", repository){ diff --git a/src/main/twirl/gitbucket/core/releases/list.scala.html b/src/main/twirl/gitbucket/core/releases/list.scala.html index a98318d..dc7b629 100644 --- a/src/main/twirl/gitbucket/core/releases/list.scala.html +++ b/src/main/twirl/gitbucket/core/releases/list.scala.html @@ -1,5 +1,5 @@ @(repository: gitbucket.core.service.RepositoryService.RepositoryInfo, - releases: Seq[(gitbucket.core.util.JGitUtil.TagInfo, Option[(gitbucket.core.model.Release, Seq[gitbucket.core.model.ReleaseAsset])])], + releases: Seq[(gitbucket.core.util.JGitUtil.TagInfo, Option[(gitbucket.core.model.ReleaseTag, Seq[gitbucket.core.model.ReleaseAsset])])], hasWritePermission: Boolean)(implicit context: gitbucket.core.controller.Context) @import gitbucket.core.view.helpers @gitbucket.core.html.main("Releases" + s" - ${repository.owner}/${repository.name}", Some(repository)){ diff --git a/src/main/twirl/gitbucket/core/releases/release.scala.html b/src/main/twirl/gitbucket/core/releases/release.scala.html index 4efc1be..7e20fb1 100644 --- a/src/main/twirl/gitbucket/core/releases/release.scala.html +++ b/src/main/twirl/gitbucket/core/releases/release.scala.html @@ -1,4 +1,4 @@ -@(release: gitbucket.core.model.Release, +@(release: gitbucket.core.model.ReleaseTag, assets: Seq[gitbucket.core.model.ReleaseAsset], hasWritePermission: Boolean, repository: gitbucket.core.service.RepositoryService.RepositoryInfo)(implicit context: gitbucket.core.controller.Context)