fix: add rows.Err() error handling

Amolith and Crush created

Co-Authored-By: Crush <crush@charm.land>

Change summary

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

Detailed changes

db/posthooks.go 🔗

@@ -51,6 +51,10 @@ func generateAndInsertProjectIDs(tx *sql.Tx) error {
 		}
 	}
 
+	if err := rows.Err(); err != nil {
+		return fmt.Errorf("failed to iterate over rows: %w", err)
+	}
+
 	if _, err := tx.Exec("DROP TABLE projects_tmp"); err != nil {
 		return fmt.Errorf("failed to drop projects_tmp: %w", err)
 	}
@@ -89,5 +93,9 @@ func correctProjectIDs(tx *sql.Tx) error {
 		}
 	}
 
+	if err := rows.Err(); err != nil {
+		return fmt.Errorf("failed to iterate over rows: %w", err)
+	}
+
 	return nil
 }

db/project.go 🔗

@@ -94,5 +94,9 @@ func GetProjects(db *sql.DB) ([]map[string]string, error) {
 		projects = append(projects, project)
 	}
 
+	if err = rows.Err(); err != nil {
+		return nil, fmt.Errorf("failed to iterate over rows: %w", err)
+	}
+
 	return projects, nil
 }

db/release.go 🔗

@@ -65,5 +65,9 @@ func GetReleases(db *sql.DB, projectID string) ([]map[string]string, error) {
 		})
 	}
 
+	if err := rows.Err(); err != nil {
+		return nil, fmt.Errorf("failed to iterate rows: %w", err)
+	}
+
 	return releases, nil
 }

db/users.go 🔗

@@ -71,6 +71,10 @@ func GetUsers(db *sql.DB) ([]string, error) {
 		users = append(users, user)
 	}
 
+	if err = rows.Err(); err != nil {
+		return nil, fmt.Errorf("failed to iterate rows: %w", err)
+	}
+
 	return users, nil
 }