fix: 完成商务迁移复核与接口优化并清理历史资料
This commit is contained in:
@@ -125,6 +125,9 @@ func (r *mediaRepo) UpdateMediaName(ctx context.Context, id uint, name string) e
|
||||
// not-found error instead of silently succeeding with RowsAffected=0.
|
||||
var po mediaPO
|
||||
if err := r.data.DB().WithContext(ctx).Where("id = ?", id).First(&po).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return system.ErrMediaNotFound
|
||||
}
|
||||
return err
|
||||
}
|
||||
return r.data.DB().WithContext(ctx).Model(&po).Update("name", name).Error
|
||||
@@ -147,7 +150,7 @@ func (r *mediaRepo) CreateMediaBatch(ctx context.Context, items []*system.MediaF
|
||||
func (r *mediaRepo) SaveCategory(ctx context.Context, v *system.AttachmentCategory) error {
|
||||
db := r.data.DB().WithContext(ctx)
|
||||
var count int64
|
||||
query := db.Model(&categoryPO{}).Where("name = ? AND pid = ?", v.Name, v.ParentID)
|
||||
query := db.Model(&categoryPO{}).Where("name = ? AND pid = ? AND id <> ?", v.Name, v.ParentID, v.ID)
|
||||
if err := query.Count(&count).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"context"
|
||||
"kra/internal/biz/system"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMediaEditsKeepUnchangedCategoryNameAndMapMissingFile(t *testing.T) {
|
||||
db, err := openWithDriver("sqlite", filepath.Join(t.TempDir(), "media.db"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
pool, _ := db.DB()
|
||||
t.Cleanup(func() { _ = pool.Close() })
|
||||
if err := db.AutoMigrate(&mediaPO{}, &categoryPO{}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
r := NewMediaRepo(&Data{gormDB: newReloadableDB(db, nil)})
|
||||
ctx := context.Background()
|
||||
category := &system.AttachmentCategory{Name: "screenshots"}
|
||||
if err := r.SaveCategory(ctx, category); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var row categoryPO
|
||||
if err := db.First(&row).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
category.ID = row.ID
|
||||
if err := r.SaveCategory(ctx, category); err != nil {
|
||||
t.Fatalf("unchanged category rejected: %v", err)
|
||||
}
|
||||
if err := r.SaveCategory(ctx, &system.AttachmentCategory{Name: "screenshots"}); err == nil {
|
||||
t.Fatal("duplicate category accepted")
|
||||
}
|
||||
if err := r.UpdateMediaName(ctx, 999, "missing"); err != system.ErrMediaNotFound {
|
||||
t.Fatalf("missing file: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user