Use modern for loops
Go 1.22 introduced a new [for-range](https://go.dev/ref/spec#For_range) construct that looks a tad better than the usual `for i := 0; i < N; i++` construct. I also tool the liberty of replacing some `for i := 0; i < len(myitemsarray); i++ { … myitemsarray[i] …}` with `for item := range myitemsarray` when `myitemsarray` contains only pointers.
This commit is contained in:
parent
f4f8342245
commit
645a817685
7 changed files with 23 additions and 23 deletions
|
@ -45,7 +45,7 @@ func refreshFeeds(store *storage.Storage) {
|
||||||
slog.Int("nb_workers", config.Opts.WorkerPoolSize()),
|
slog.Int("nb_workers", config.Opts.WorkerPoolSize()),
|
||||||
)
|
)
|
||||||
|
|
||||||
for i := 0; i < config.Opts.WorkerPoolSize(); i++ {
|
for i := range config.Opts.WorkerPoolSize() {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(workerID int) {
|
go func(workerID int) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
|
@ -418,7 +418,7 @@ func TestParseEntryWithPlainTextTitle(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `AT&T bought by SBC!`
|
expected := `AT&T bought by SBC!`
|
||||||
for i := 0; i < 2; i++ {
|
for i := range 2 {
|
||||||
if feed.Entries[i].Title != expected {
|
if feed.Entries[i].Title != expected {
|
||||||
t.Errorf("Incorrect title for entry #%d, got: %q", i, feed.Entries[i].Title)
|
t.Errorf("Incorrect title for entry #%d, got: %q", i, feed.Entries[i].Title)
|
||||||
}
|
}
|
||||||
|
@ -677,7 +677,7 @@ func TestParseEntryWithHTMLSummary(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `<code>std::unique_ptr<S></code>`
|
expected := `<code>std::unique_ptr<S></code>`
|
||||||
for i := 0; i < 3; i++ {
|
for i := range 3 {
|
||||||
if feed.Entries[i].Content != expected {
|
if feed.Entries[i].Content != expected {
|
||||||
t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content)
|
t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content)
|
||||||
}
|
}
|
||||||
|
@ -729,7 +729,7 @@ func TestParseEntryWithTextSummary(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `AT&T <S>`
|
expected := `AT&T <S>`
|
||||||
for i := 0; i < 4; i++ {
|
for i := range 4 {
|
||||||
if feed.Entries[i].Content != expected {
|
if feed.Entries[i].Content != expected {
|
||||||
t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content)
|
t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content)
|
||||||
}
|
}
|
||||||
|
@ -782,7 +782,7 @@ func TestParseEntryWithTextContent(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `AT&T <S>`
|
expected := `AT&T <S>`
|
||||||
for i := 0; i < 4; i++ {
|
for i := range 4 {
|
||||||
if feed.Entries[i].Content != expected {
|
if feed.Entries[i].Content != expected {
|
||||||
t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content)
|
t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content)
|
||||||
}
|
}
|
||||||
|
@ -827,7 +827,7 @@ func TestParseEntryWithHTMLContent(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `AT&T bought <b>by SBC</b>!`
|
expected := `AT&T bought <b>by SBC</b>!`
|
||||||
for i := 0; i < 3; i++ {
|
for i := range 3 {
|
||||||
if feed.Entries[i].Content != expected {
|
if feed.Entries[i].Content != expected {
|
||||||
t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content)
|
t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content)
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ func TestParseOpmlWithCategories(t *testing.T) {
|
||||||
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 3)
|
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(subscriptions); i++ {
|
for i := range len(subscriptions) {
|
||||||
if !subscriptions[i].Equals(expected[i]) {
|
if !subscriptions[i].Equals(expected[i]) {
|
||||||
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ func TestParseOpmlWithEmptyTitleAndEmptySiteURL(t *testing.T) {
|
||||||
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 2)
|
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(subscriptions); i++ {
|
for i := range len(subscriptions) {
|
||||||
if !subscriptions[i].Equals(expected[i]) {
|
if !subscriptions[i].Equals(expected[i]) {
|
||||||
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ func TestParseOpmlVersion1(t *testing.T) {
|
||||||
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 2)
|
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(subscriptions); i++ {
|
for i := range len(subscriptions) {
|
||||||
if !subscriptions[i].Equals(expected[i]) {
|
if !subscriptions[i].Equals(expected[i]) {
|
||||||
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
||||||
}
|
}
|
||||||
|
@ -186,7 +186,7 @@ func TestParseOpmlVersion1WithoutOuterOutline(t *testing.T) {
|
||||||
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 2)
|
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(subscriptions); i++ {
|
for i := range len(subscriptions) {
|
||||||
if !subscriptions[i].Equals(expected[i]) {
|
if !subscriptions[i].Equals(expected[i]) {
|
||||||
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
||||||
}
|
}
|
||||||
|
@ -228,7 +228,7 @@ func TestParseOpmlVersion1WithSeveralNestedOutlines(t *testing.T) {
|
||||||
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 3)
|
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(subscriptions); i++ {
|
for i := range len(subscriptions) {
|
||||||
if !subscriptions[i].Equals(expected[i]) {
|
if !subscriptions[i].Equals(expected[i]) {
|
||||||
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
||||||
}
|
}
|
||||||
|
@ -261,7 +261,7 @@ func TestParseOpmlWithInvalidCharacterEntity(t *testing.T) {
|
||||||
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 1)
|
t.Fatalf("Wrong number of subscriptions: %d instead of %d", len(subscriptions), 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(subscriptions); i++ {
|
for i := range len(subscriptions) {
|
||||||
if !subscriptions[i].Equals(expected[i]) {
|
if !subscriptions[i].Equals(expected[i]) {
|
||||||
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
t.Errorf(`Subscription is different: "%v" vs "%v"`, subscriptions[i], expected[i])
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,10 +150,10 @@ func (s *Storage) createEntry(tx *sql.Tx, entry *model.Entry) error {
|
||||||
return fmt.Errorf(`store: unable to create entry %q (feed #%d): %v`, entry.URL, entry.FeedID, err)
|
return fmt.Errorf(`store: unable to create entry %q (feed #%d): %v`, entry.URL, entry.FeedID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(entry.Enclosures); i++ {
|
for _, enclosure := range entry.Enclosures {
|
||||||
entry.Enclosures[i].EntryID = entry.ID
|
enclosure.EntryID = entry.ID
|
||||||
entry.Enclosures[i].UserID = entry.UserID
|
enclosure.UserID = entry.UserID
|
||||||
err := s.createEnclosure(tx, entry.Enclosures[i])
|
err := s.createEnclosure(tx, enclosure)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -277,16 +277,16 @@ func (s *Storage) CreateFeed(feed *model.Feed) error {
|
||||||
return fmt.Errorf(`store: unable to create feed %q: %v`, feed.FeedURL, err)
|
return fmt.Errorf(`store: unable to create feed %q: %v`, feed.FeedURL, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(feed.Entries); i++ {
|
for _, entry := range feed.Entries {
|
||||||
feed.Entries[i].FeedID = feed.ID
|
entry.FeedID = feed.ID
|
||||||
feed.Entries[i].UserID = feed.UserID
|
entry.UserID = feed.UserID
|
||||||
|
|
||||||
tx, err := s.db.Begin()
|
tx, err := s.db.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf(`store: unable to start transaction: %v`, err)
|
return fmt.Errorf(`store: unable to start transaction: %v`, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
entryExists, err := s.entryExists(tx, feed.Entries[i])
|
entryExists, err := s.entryExists(tx, entry)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
||||||
return fmt.Errorf(`store: unable to rollback transaction: %v (rolled back due to: %v)`, rollbackErr, err)
|
return fmt.Errorf(`store: unable to rollback transaction: %v (rolled back due to: %v)`, rollbackErr, err)
|
||||||
|
@ -295,7 +295,7 @@ func (s *Storage) CreateFeed(feed *model.Feed) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !entryExists {
|
if !entryExists {
|
||||||
if err := s.createEntry(tx, feed.Entries[i]); err != nil {
|
if err := s.createEntry(tx, entry); err != nil {
|
||||||
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
||||||
return fmt.Errorf(`store: unable to rollback transaction: %v (rolled back due to: %v)`, rollbackErr, err)
|
return fmt.Errorf(`store: unable to rollback transaction: %v (rolled back due to: %v)`, rollbackErr, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ const (
|
||||||
|
|
||||||
func getRandomUsername() string {
|
func getRandomUsername() string {
|
||||||
var suffix []string
|
var suffix []string
|
||||||
for i := 0; i < 10; i++ {
|
for range 10 {
|
||||||
suffix = append(suffix, strconv.Itoa(rand.Intn(1000)))
|
suffix = append(suffix, strconv.Itoa(rand.Intn(1000)))
|
||||||
}
|
}
|
||||||
return "user" + strings.Join(suffix, "")
|
return "user" + strings.Join(suffix, "")
|
||||||
|
|
|
@ -26,7 +26,7 @@ func NewPool(store *storage.Storage, nbWorkers int) *Pool {
|
||||||
queue: make(chan model.Job),
|
queue: make(chan model.Job),
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < nbWorkers; i++ {
|
for i := range nbWorkers {
|
||||||
worker := &Worker{id: i, store: store}
|
worker := &Worker{id: i, store: store}
|
||||||
go worker.Run(workerPool.queue)
|
go worker.Run(workerPool.queue)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue