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() }
func findOrCreateUser(user *c.User) int64 { var new_user c.User c.DB.Where("gh_id = ?", user.GhId).First(&new_user) if new_user.Id == 0 { new_user.Login = user.Login new_user.AvatarUrl = user.AvatarUrl new_user.GhId = user.GhId new_user.CommitCount = 0 c.DB.Save(&new_user) } return new_user.Id }