package store import ( "fmt" "os" "path/filepath" "testing" "time" ) func TestSaveNsfwBatchLarge(t *testing.T) { db := filepath.Join(t.TempDir(), "test.db") s, err := Open(db) if err != nil { t.Fatalf("Open: %v", err) } defer func() { s.Close() os.Remove(db) }() // 3000 条,远超 SQLite 999 变量上限(旧代码会报 too many SQL variables) records := make([]*NsfwRecord, 0, 3000) for i := 0; i < 3000; i++ { records = append(records, &NsfwRecord{ FilePath: fmt.Sprintf("/path/%d.jpg", i), FileName: fmt.Sprintf("%d.jpg", i), Score: 0.5, Threshold: 0.2, MovedPath: fmt.Sprintf("/moved/%d.jpg", i), CreatedAt: time.Now(), }) } if err := s.SaveNsfwBatch(records); err != nil { t.Fatalf("SaveNsfwBatch: %v", err) } list, err := s.ListNsfw() if err != nil { t.Fatalf("ListNsfw: %v", err) } if len(list) != 3000 { t.Fatalf("got %d records, want 3000", len(list)) } }