fix(db): handle iteration errors

Amolith created

Change summary

db/posthooks.go | 8 ++++++++
db/project.go   | 4 ++++
db/release.go   | 4 ++++
db/users.go     | 3 +++
4 files changed, 19 insertions(+)

Detailed changes

db/posthooks.go 🔗

@@ -53,6 +53,10 @@ func generateAndInsertProjectIDs(tx *sql.Tx) error {
 		return fmt.Errorf("failed to drop projects_tmp: %w", err)
 	}
 
+	if err := rows.Err(); err != nil {
+		return fmt.Errorf("failed during row iteration for projects_tmp: %w", err)
+	}
+
 	return nil
 }
 
@@ -85,5 +89,9 @@ func correctProjectIDs(tx *sql.Tx) error {
 		}
 	}
 
+	if err := rows.Err(); err != nil {
+		return fmt.Errorf("failed during row iteration for projects_tmp: %w", err)
+	}
+
 	return nil
 }

db/project.go 🔗

@@ -6,6 +6,7 @@ package db
 
 import (
 	"database/sql"
+	"fmt"
 	"sync"
 )
 
@@ -76,5 +77,8 @@ func GetProjects(db *sql.DB) ([]map[string]string, error) {
 		}
 		projects = append(projects, project)
 	}
+	if err := rows.Err(); err != nil {
+		return nil, fmt.Errorf("failed during row iteration for projects: %w", err)
+	}
 	return projects, nil
 }

db/release.go 🔗

@@ -6,6 +6,7 @@ package db
 
 import (
 	"database/sql"
+	"fmt"
 	"sync"
 )
 
@@ -56,5 +57,8 @@ func GetReleases(db *sql.DB, projectID string) ([]map[string]string, error) {
 			"date":       date,
 		})
 	}
+	if err := rows.Err(); err != nil {
+		return nil, fmt.Errorf("failed during row iteration for releases: %w", err)
+	}
 	return releases, nil
 }

db/users.go 🔗

@@ -53,6 +53,9 @@ func GetUsers(db *sql.DB) ([]string, error) {
 		users = append(users, user)
 	}
 
+	if err := rows.Err(); err != nil {
+		return nil, err
+	}
 	return users, nil
 }