stash/pkg/sqlite/migrations/12_postmigrate.go

61 lines
1.4 KiB
Go

package migrations
import (
"context"
"github.com/jmoiron/sqlx"
"github.com/stashapp/stash/internal/manager/config"
"github.com/stashapp/stash/pkg/logger"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sqlite"
)
func post12(ctx context.Context, db *sqlx.DB) error {
m := schema12Migrator{
migrator: migrator{
db: db,
},
}
return m.migrateConfig(ctx)
}
type schema12Migrator struct {
migrator
}
func (m *schema12Migrator) migrateConfig(ctx context.Context) error {
// if there are no scene files in the database, then default the
// VideoFileNamingAlgorithm config setting to oshash and calculateMD5 to
// false, otherwise set them to true for backwards compatibility purposes
var count int
if err := m.withTxn(ctx, func(tx *sqlx.Tx) error {
query := "SELECT COUNT(*) from `scenes`"
return tx.Get(&count, query)
}); err != nil {
return err
}
usingMD5 := count != 0
defaultAlgorithm := models.HashAlgorithmOshash
if usingMD5 {
logger.Infof("Defaulting video file naming algorithm to %s", models.HashAlgorithmMd5)
defaultAlgorithm = models.HashAlgorithmMd5
}
c := config.GetInstance()
c.SetDefault(config.VideoFileNamingAlgorithm, defaultAlgorithm)
c.SetDefault(config.CalculateMD5, usingMD5)
if err := c.Write(); err != nil {
logger.Errorf("Error while writing configuration file: %s", err.Error())
}
return nil
}
func init() {
sqlite.RegisterPostMigration(12, post12)
}