fix(scanner): fix records with album name same as artist

and never use db.Where() with a struct

gorm was seeing a query like

    db.Where(Album{Left: left, Right: right})

but if the `left` variable was empty, gorm couldn't differentiate it with an empty field in the struct
so it generated SQL that we weren't expected

like

    SELECT * FROM albums WHERE right=?

instead of

    SELECT * FROM albums WHERE left=? AND right=?

fixes #230
This commit is contained in:
sentriz
2022-09-09 13:05:53 +01:00
parent a11d6ab92d
commit fdbb28209b
5 changed files with 56 additions and 30 deletions

View File

@@ -55,8 +55,8 @@ func NewMock() (*DB, error) {
}
func (db *DB) GetSetting(key string) (string, error) {
setting := &Setting{}
if err := db.Where("key=?", key).First(setting).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
var setting Setting
if err := db.Where("key=?", key).First(&setting).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return "", err
}
return setting.Value, nil
@@ -64,8 +64,8 @@ func (db *DB) GetSetting(key string) (string, error) {
func (db *DB) SetSetting(key, value string) error {
return db.
Where(Setting{Key: key}).
Assign(Setting{Value: value}).
Where("key=?", key).
Assign(Setting{Key: key, Value: value}).
FirstOrCreate(&Setting{}).
Error
}
@@ -89,27 +89,27 @@ func (db *DB) InsertBulkLeftMany(table string, head []string, left int, col []in
}
func (db *DB) GetUserByID(id int) *User {
user := &User{}
var user User
err := db.
Where("id=?", id).
First(user).
First(&user).
Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil
}
return user
return &user
}
func (db *DB) GetUserByName(name string) *User {
user := &User{}
var user User
err := db.
Where("name=?", name).
First(user).
First(&user).
Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil
}
return user
return &user
}
func (db *DB) Begin() *DB {