forgejo/models/forgejo/semver/semver.go

81 lines
1.6 KiB
Go
Raw Normal View History

[SEMVER] store SemVer in ForgejoSemVer after a database upgrade (cherry picked from commit b7fe7cf401f4bddd6455efc651f7ac054f3fe1cf) (cherry picked from commit cf339eed4f4851b18448dbdd83df32d00bc6f45b) (cherry picked from commit 4f3a16168bbeced519a60c32e10e2895d9367238) (cherry picked from commit 6f5bbc53fcebd614f5ee8627c7d6e3c637ffa694) (cherry picked from commit aca42b422e76668387769c15868ef77b073bb7db) (cherry picked from commit 5a7f7580e525694d1f27e12329c8532bd29273f8) (cherry picked from commit 06c383c807ad49e1e35b429a10c6a11c65aeebe5) (cherry picked from commit fe831dcb53b81b6cc632be751bfcbfb9bc00efd3) (cherry picked from commit cd12cd0dbce47c6117ea579ae5019c182155b3a9) (cherry picked from commit cc79163703ce31706c86b88c38fb8a20ed745e20) (cherry picked from commit 0102a5715ea6a03b560cc2f0b6cbe2b2576c255e) (cherry picked from commit 403f7520b3056eace36eae505afbab6a05f597b7) (cherry picked from commit a3b61510a246f61c174ddc3c288e556522a6aab9) (cherry picked from commit f83f0f9feb76a8b62ca4d74dc2785c713fbec282) (cherry picked from commit fd1c3a6d09a057070844cd955d0920518e60f408) (cherry picked from commit f7cdc3d6f1ad1ff01bb1814207fcb41210db80e8) (cherry picked from commit 060121b644e0515a6b673cdd514d52e6fa1e6ec3) (cherry picked from commit 62c847ff0235196e73e860d0d1658f0734985270) (cherry picked from commit 4d051b51c2813828b978ef84b6b72c0ba051741b) (cherry picked from commit 86e6981a936b1937065605892083b2488424bf5e) (cherry picked from commit c1fc9e441b1467033911f3848f82a89aaacf98a9) (cherry picked from commit 8bb2f0871a507d881acf74acf8fb90fd5ebff567) (cherry picked from commit 0cd9fe52511ee06f1b8849325d196f60d8ccd151) (cherry picked from commit b0b44778b4d3e51852d0669dfe6d9a6c334b90e4)
2023-08-08 21:55:25 +00:00
// SPDX-License-Identifier: MIT
package semver
import (
"context"
"code.gitea.io/gitea/models/db"
"github.com/hashicorp/go-version"
)
func init() {
db.RegisterModel(new(ForgejoSemVer))
}
[UPGRADE] add sanity checks for [storage*] Refs: https://forgejo.org/2023-08-release-v1-20-3-0/ (cherry picked from commit a266dd0ce3fca1296c6713ff1266f0065f0cd72b) (cherry picked from commit b9eb5eccd83e73ab6fb392557b7036063244f357) (cherry picked from commit 7fc2028ede6e3a576c3714b27940de9f871c33bd) (cherry picked from commit 0c988e612028eab277f03c16c0597da08c2c293a) (cherry picked from commit 7ba05e8c2b51c4c08ab3885f9014f7bdaf3d0f6b) (cherry picked from commit 2ed5068abe0cb57a257167d669faee207762b1d0) (cherry picked from commit 353913a26dd749f017cf8b76cf9218f68e8ca408) (cherry picked from commit 4e63a01a8bf9d0c8a1a6a6d7a3b18c64369bbaf1) (cherry picked from commit 99f612aed30852b23fe325bd5b6095aee9bd558e) (cherry picked from commit b4fe189caea9c656edd9c0c20e0d667911e4921c) (cherry picked from commit bd35e3b7bc2d64e649915c5103067be1c7ffbe44) (cherry picked from commit f59d9f7088af9963041eedc46fcce2ec8c9c4722) (cherry picked from commit 0b2a93e044b1d9319345ed2b6104a479eae376ef) (cherry picked from commit 8c5d8bfea0d65ebab33e2cb7dd04298d0f263fdd) (cherry picked from commit 2817ce027cbcd630d83484c98b9539a3a94a5266) (cherry picked from commit 162056cbcfd79710e4d81b1b36f650be291df832) (cherry picked from commit 07152a0ba640f71fa669ef84c473eb773a15ede9) (cherry picked from commit 72e37779159a1820bb2d02b4647967fed3c8abc2) (cherry picked from commit 3b1ebd95b94327b8056eed51e9c6dbb4c412af09) (cherry picked from commit 14fc4f3fac637fb026a64b6110026533caa11dfc) (cherry picked from commit 9052c86e8ce97895eec8642bdb1c987790924b03) (cherry picked from commit 16f1cc21ea518c5390061534c8cfcc8f9f0c2587) (cherry picked from commit 0fef12f5d85870fa364d6046ac04dcdfc8cb69df) (cherry picked from commit d187381f73a0859198aade34057c63aef38d764d)
2023-08-08 22:06:25 +00:00
var DefaultVersionString = "1.0.0"
[SEMVER] store SemVer in ForgejoSemVer after a database upgrade (cherry picked from commit b7fe7cf401f4bddd6455efc651f7ac054f3fe1cf) (cherry picked from commit cf339eed4f4851b18448dbdd83df32d00bc6f45b) (cherry picked from commit 4f3a16168bbeced519a60c32e10e2895d9367238) (cherry picked from commit 6f5bbc53fcebd614f5ee8627c7d6e3c637ffa694) (cherry picked from commit aca42b422e76668387769c15868ef77b073bb7db) (cherry picked from commit 5a7f7580e525694d1f27e12329c8532bd29273f8) (cherry picked from commit 06c383c807ad49e1e35b429a10c6a11c65aeebe5) (cherry picked from commit fe831dcb53b81b6cc632be751bfcbfb9bc00efd3) (cherry picked from commit cd12cd0dbce47c6117ea579ae5019c182155b3a9) (cherry picked from commit cc79163703ce31706c86b88c38fb8a20ed745e20) (cherry picked from commit 0102a5715ea6a03b560cc2f0b6cbe2b2576c255e) (cherry picked from commit 403f7520b3056eace36eae505afbab6a05f597b7) (cherry picked from commit a3b61510a246f61c174ddc3c288e556522a6aab9) (cherry picked from commit f83f0f9feb76a8b62ca4d74dc2785c713fbec282) (cherry picked from commit fd1c3a6d09a057070844cd955d0920518e60f408) (cherry picked from commit f7cdc3d6f1ad1ff01bb1814207fcb41210db80e8) (cherry picked from commit 060121b644e0515a6b673cdd514d52e6fa1e6ec3) (cherry picked from commit 62c847ff0235196e73e860d0d1658f0734985270) (cherry picked from commit 4d051b51c2813828b978ef84b6b72c0ba051741b) (cherry picked from commit 86e6981a936b1937065605892083b2488424bf5e) (cherry picked from commit c1fc9e441b1467033911f3848f82a89aaacf98a9) (cherry picked from commit 8bb2f0871a507d881acf74acf8fb90fd5ebff567) (cherry picked from commit 0cd9fe52511ee06f1b8849325d196f60d8ccd151) (cherry picked from commit b0b44778b4d3e51852d0669dfe6d9a6c334b90e4)
2023-08-08 21:55:25 +00:00
type ForgejoSemVer struct {
Version string
}
func GetVersion(ctx context.Context) (*version.Version, error) {
return GetVersionWithEngine(db.GetEngine(ctx))
}
func GetVersionWithEngine(e db.Engine) (*version.Version, error) {
[UPGRADE] add sanity checks for [storage*] Refs: https://forgejo.org/2023-08-release-v1-20-3-0/ (cherry picked from commit a266dd0ce3fca1296c6713ff1266f0065f0cd72b) (cherry picked from commit b9eb5eccd83e73ab6fb392557b7036063244f357) (cherry picked from commit 7fc2028ede6e3a576c3714b27940de9f871c33bd) (cherry picked from commit 0c988e612028eab277f03c16c0597da08c2c293a) (cherry picked from commit 7ba05e8c2b51c4c08ab3885f9014f7bdaf3d0f6b) (cherry picked from commit 2ed5068abe0cb57a257167d669faee207762b1d0) (cherry picked from commit 353913a26dd749f017cf8b76cf9218f68e8ca408) (cherry picked from commit 4e63a01a8bf9d0c8a1a6a6d7a3b18c64369bbaf1) (cherry picked from commit 99f612aed30852b23fe325bd5b6095aee9bd558e) (cherry picked from commit b4fe189caea9c656edd9c0c20e0d667911e4921c) (cherry picked from commit bd35e3b7bc2d64e649915c5103067be1c7ffbe44) (cherry picked from commit f59d9f7088af9963041eedc46fcce2ec8c9c4722) (cherry picked from commit 0b2a93e044b1d9319345ed2b6104a479eae376ef) (cherry picked from commit 8c5d8bfea0d65ebab33e2cb7dd04298d0f263fdd) (cherry picked from commit 2817ce027cbcd630d83484c98b9539a3a94a5266) (cherry picked from commit 162056cbcfd79710e4d81b1b36f650be291df832) (cherry picked from commit 07152a0ba640f71fa669ef84c473eb773a15ede9) (cherry picked from commit 72e37779159a1820bb2d02b4647967fed3c8abc2) (cherry picked from commit 3b1ebd95b94327b8056eed51e9c6dbb4c412af09) (cherry picked from commit 14fc4f3fac637fb026a64b6110026533caa11dfc) (cherry picked from commit 9052c86e8ce97895eec8642bdb1c987790924b03) (cherry picked from commit 16f1cc21ea518c5390061534c8cfcc8f9f0c2587) (cherry picked from commit 0fef12f5d85870fa364d6046ac04dcdfc8cb69df) (cherry picked from commit d187381f73a0859198aade34057c63aef38d764d)
2023-08-08 22:06:25 +00:00
versionString := DefaultVersionString
[SEMVER] store SemVer in ForgejoSemVer after a database upgrade (cherry picked from commit b7fe7cf401f4bddd6455efc651f7ac054f3fe1cf) (cherry picked from commit cf339eed4f4851b18448dbdd83df32d00bc6f45b) (cherry picked from commit 4f3a16168bbeced519a60c32e10e2895d9367238) (cherry picked from commit 6f5bbc53fcebd614f5ee8627c7d6e3c637ffa694) (cherry picked from commit aca42b422e76668387769c15868ef77b073bb7db) (cherry picked from commit 5a7f7580e525694d1f27e12329c8532bd29273f8) (cherry picked from commit 06c383c807ad49e1e35b429a10c6a11c65aeebe5) (cherry picked from commit fe831dcb53b81b6cc632be751bfcbfb9bc00efd3) (cherry picked from commit cd12cd0dbce47c6117ea579ae5019c182155b3a9) (cherry picked from commit cc79163703ce31706c86b88c38fb8a20ed745e20) (cherry picked from commit 0102a5715ea6a03b560cc2f0b6cbe2b2576c255e) (cherry picked from commit 403f7520b3056eace36eae505afbab6a05f597b7) (cherry picked from commit a3b61510a246f61c174ddc3c288e556522a6aab9) (cherry picked from commit f83f0f9feb76a8b62ca4d74dc2785c713fbec282) (cherry picked from commit fd1c3a6d09a057070844cd955d0920518e60f408) (cherry picked from commit f7cdc3d6f1ad1ff01bb1814207fcb41210db80e8) (cherry picked from commit 060121b644e0515a6b673cdd514d52e6fa1e6ec3) (cherry picked from commit 62c847ff0235196e73e860d0d1658f0734985270) (cherry picked from commit 4d051b51c2813828b978ef84b6b72c0ba051741b) (cherry picked from commit 86e6981a936b1937065605892083b2488424bf5e) (cherry picked from commit c1fc9e441b1467033911f3848f82a89aaacf98a9) (cherry picked from commit 8bb2f0871a507d881acf74acf8fb90fd5ebff567) (cherry picked from commit 0cd9fe52511ee06f1b8849325d196f60d8ccd151) (cherry picked from commit b0b44778b4d3e51852d0669dfe6d9a6c334b90e4)
2023-08-08 21:55:25 +00:00
exists, err := e.IsTableExist("forgejo_sem_ver")
if err != nil {
return nil, err
}
if exists {
var semver ForgejoSemVer
has, err := e.Get(&semver)
if err != nil {
return nil, err
} else if has {
versionString = semver.Version
}
}
v, err := version.NewVersion(versionString)
if err != nil {
return nil, err
}
return v, nil
}
func SetVersionString(ctx context.Context, versionString string) error {
return SetVersionStringWithEngine(db.GetEngine(ctx), versionString)
}
func SetVersionStringWithEngine(e db.Engine, versionString string) error {
v, err := version.NewVersion(versionString)
if err != nil {
return err
}
return SetVersionWithEngine(e, v)
}
func SetVersion(ctx context.Context, v *version.Version) error {
return SetVersionWithEngine(db.GetEngine(ctx), v)
}
func SetVersionWithEngine(e db.Engine, v *version.Version) error {
var semver ForgejoSemVer
has, err := e.Get(&semver)
if err != nil {
return err
}
if !has {
_, err = e.Exec("insert into forgejo_sem_ver values (?)", v.String())
} else {
_, err = e.Exec("update forgejo_sem_ver set version = ?", v.String())
}
return err
}