[AI assisted] MM-62755: Refactor scanning to map to a util (#30780)

With some neat generics, I was able to refactor
the scanning to a util function. I used it to
refactor 3 places and also removed an unnecessary method.

Claude was quite good here.

https://mattermost.atlassian.net/browse/MM-62755
```release-note
NONE
```
Этот коммит содержится в:
Agniva De Sarker
2025-04-28 19:21:12 +05:30
коммит произвёл GitHub
родитель cd5523f5fb
Коммит efde5e2717
4 изменённых файлов: 178 добавлений и 50 удалений

Просмотреть файл

@@ -196,3 +196,27 @@ func quoteColumnName(driver string, columnName string) string {
return columnName
}
// scanRowsIntoMap scans SQL rows into a map, using a provided scanner function to extract key-value pairs
func scanRowsIntoMap[K comparable, V any](rows *sql.Rows, scanner func(rows *sql.Rows) (K, V, error), defaults map[K]V) (map[K]V, error) {
results := make(map[K]V, len(defaults))
// Initialize with default values if provided
for k, v := range defaults {
results[k] = v
}
for rows.Next() {
key, value, err := scanner(rows)
if err != nil {
return nil, err
}
results[key] = value
}
if err := rows.Err(); err != nil {
return nil, fmt.Errorf("error while iterating rows: %w", err)
}
return results, nil
}