71 lines
1.4 KiB
Go
71 lines
1.4 KiB
Go
package version
|
|
|
|
import (
|
|
portainer "github.com/portainer/portainer/api"
|
|
"github.com/portainer/portainer/api/database/models"
|
|
"github.com/portainer/portainer/api/dataservices"
|
|
)
|
|
|
|
type ServiceTx struct {
|
|
dataservices.BaseDataServiceTx[models.Version, int] // ID is not used
|
|
}
|
|
|
|
func (tx ServiceTx) InstanceID() (string, error) {
|
|
v, err := tx.Version()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return v.InstanceID, nil
|
|
}
|
|
|
|
func (tx ServiceTx) UpdateInstanceID(ID string) error {
|
|
v, err := tx.Version()
|
|
if err != nil {
|
|
if !dataservices.IsErrObjectNotFound(err) {
|
|
return err
|
|
}
|
|
|
|
v = &models.Version{}
|
|
}
|
|
|
|
v.InstanceID = ID
|
|
|
|
return tx.UpdateVersion(v)
|
|
}
|
|
|
|
func (tx ServiceTx) Edition() (portainer.SoftwareEdition, error) {
|
|
v, err := tx.Version()
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return portainer.SoftwareEdition(v.Edition), nil
|
|
}
|
|
|
|
func (tx ServiceTx) Version() (*models.Version, error) {
|
|
var v models.Version
|
|
|
|
err := tx.Tx.GetObject(BucketName, []byte(versionKey), &v)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &v, nil
|
|
}
|
|
|
|
func (tx ServiceTx) UpdateVersion(version *models.Version) error {
|
|
return tx.Tx.UpdateObject(BucketName, []byte(versionKey), version)
|
|
}
|
|
|
|
func (tx ServiceTx) SchemaVersion() (string, error) {
|
|
var v models.Version
|
|
|
|
err := tx.Tx.GetObject(BucketName, []byte(versionKey), &v)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return v.SchemaVersion, nil
|
|
}
|