@@ -143,23 +143,32 @@ func (c *UserListConfig) loadCollaborators() error {
143143 slog .DebugContext (ctx , "Processing repository" , "repository" , repo .Name , "collaborator.count" , len (repo .Collaborators .Nodes ))
144144 for _ , collaborator := range repo .Collaborators .Nodes {
145145 slog .DebugContext (ctx , "Processing collaborator" , "login" , collaborator .Login , "name" , collaborator .Name , "contributions" , collaborator .ContributionsCollection .ContributionCalendar .TotalContributions )
146+
147+ // User
146148 user := c .userList .findUser (collaborator .Login )
147149 if user == nil {
148150 user = c .userList .createUser (userNumber + 1 , collaborator .Login , collaborator .Name , "" , collaborator .ContributionsCollection .ContributionCalendar .TotalContributions )
149151 userNumber ++
150152 } else {
151153 slog .Info ("Found existing user" , "login" , user .Login )
152154 }
153- organization := Organization {
154- Login : org .Login ,
155- Name : org .Name ,
156- Repositories : new ([]Repository ),
155+
156+ // Organization
157+ organization := user .findOrganization (org .Login )
158+ if organization == nil {
159+ organization = user .createOrganization (org .Login , org .Name )
160+ } else {
161+ slog .Info ("Found existing organization" , "organization" , organization .Name )
157162 }
158- user .upsertOrganization (organization )
159- repository := Repository {
160- Name : repo .Name ,
163+
164+ // Repository
165+ repository := organization .findRepository (repo .Name )
166+ if repository == nil {
167+ repository = organization .createRepository (repo .Name )
168+ } else {
169+ slog .Info ("Found existing repository" , "repository" , repository .Name )
161170 }
162- organization .upsertRepository (repository )
171+ organization .upsertRepository (* repository )
163172 }
164173 }
165174
0 commit comments