mirror of https://github.com/stashapp/stash.git
61 lines
1.4 KiB
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)
|
||
|
}
|