0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2024-12-25 08:54:17 -05:00
forgejo/models/forgejo/semver/semver.go
Earl Warren 353913a26d
[UPGRADE] add sanity checks for [storage*]
Refs: https://forgejo.org/2023-08-release-v1-20-3-0/
(cherry picked from commit a266dd0ce3)
(cherry picked from commit b9eb5eccd8)
(cherry picked from commit 7fc2028ede)
(cherry picked from commit 0c988e6120)
(cherry picked from commit 7ba05e8c2b)
(cherry picked from commit 2ed5068abe)
2023-09-18 14:00:12 +02:00

80 lines
1.6 KiB
Go

// 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))
}
var DefaultVersionString = "1.0.0"
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) {
versionString := DefaultVersionString
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
}