func generateCommitCountPerUser() { fmt.Println("Generating commit count per user") rows, err := c.DB.Table("repo_stats").Select(` user_id, array_agg(distinct o.login) as organization_list, sum(commits) as commit_count `).Joins(` inner join repositories r on r.id = repo_stats.repository_id inner join organizations o on o.id = r.organization_id `).Group("user_id").Rows() c.PanicOn(err) for rows.Next() { var user c.User var user_id, commit_count int64 var org_list string rows.Scan(&user_id, &org_list, &commit_count) if user_id == 0 { continue } c.DB.Where("id = ?", user_id).First(&user) if commit_count != user.CommitCount { user.CommitCount = commit_count user.OrgList = org_list c.DB.Save(&user) } } rows.Close() }