@@ -100,8 +100,7 @@ func BootstrapSQLite(dbPath, spreadsheetID, worksheetCredentialsPath, fossaToken
100100 return db , nil
101101}
102102
103- // Reads the readRange data from spreadsheetID inserts it into db
104- // The readRange from the worksheet MUST include the header row
103+ // Reads data from spreadsheetID inserts it into db.
105104func loadMaintainersAndProjects (db * gorm.DB , spreadsheetID , credentialsPath string ) error {
106105 ctx := context .Background ()
107106
@@ -113,12 +112,14 @@ func loadMaintainersAndProjects(db *gorm.DB, spreadsheetID, credentialsPath stri
113112
114113 if err != nil {
115114 log .Fatalf ("maintainerd: backend: loadMaintainersAndProjects: unable to retrieve Sheets client: %v" , err )
115+ return err
116116 }
117117
118118 rows , err := readSheetRows (ctx , srv , spreadsheetID )
119119
120120 if err != nil {
121121 log .Fatalf ("maintainerd-backend: loadMaintainersAndProjects - readSheetRows: %v" , err )
122+ return err
122123 }
123124
124125 var currentMaintainerRef string
@@ -154,9 +155,15 @@ func loadMaintainersAndProjects(db *gorm.DB, spreadsheetID, credentialsPath stri
154155 log .Printf ("DEBUG, processing maintainer %s, missing fields %v \n " , row [MaintainerNameHdr ], missingMaintainerFields )
155156 var parent model.Project
156157 if parentName := row [ParentProjectHdr ]; parentName != "" {
157- parent = model.Project {}
158158 if err := db .Where ("name = ?" , parentName ).
159159 First (& parent ).Error ; err != nil {
160+ if errors .Is (err , gorm .ErrRecordNotFound ) {
161+ log .Printf ("WARN, parent project '%s' not found for project '%s', importing without parent" , parentName , row [ProjectHdr ])
162+ } else {
163+ log .Printf ("ERR, error looking up parent project '%s' for project '%s': %v" , parentName , row [ProjectHdr ], err )
164+ }
165+ } else {
166+ log .Printf ("INFO, project '%s' will be associated with parent project '%s' (ID: %d)" , row [ProjectHdr ], parentName , parent .ID )
160167 }
161168 }
162169 currentMaintainerRef = row [MaintainerFileRefHdr ]
@@ -181,11 +188,11 @@ func loadMaintainersAndProjects(db *gorm.DB, spreadsheetID, credentialsPath stri
181188 }
182189 }
183190 if err := tx .FirstOrCreate (& project , model.Project {Name : project .Name }).Error ; err != nil {
184- return fmt .Errorf ("maintainerd-backend: loadMaintainersAndProjects - failed calling FirstOrCreate on project %v: error %v" , project , err )
191+ return fmt .Errorf ("ERR, loadMaintainersAndProjects - failed calling FirstOrCreate on project %v: error %v" , project , err )
185192 }
186193 company := model.Company {Name : company }
187194 if err := tx .FirstOrCreate (& company , model.Company {Name : company .Name }).Error ; err != nil {
188- return fmt .Errorf ("maintainerd-backend: loadMaintainersAndProjects - failed calling FirstOrCreate on company %v: error %v" , company , err )
195+ return fmt .Errorf ("ERR, loadMaintainersAndProjects - failed calling FirstOrCreate on company %v: error %v" , company , err )
189196 }
190197 maintainer := model.Maintainer {
191198 Name : name ,
@@ -196,14 +203,14 @@ func loadMaintainersAndProjects(db *gorm.DB, spreadsheetID, credentialsPath stri
196203 MaintainerStatus : model .ActiveMaintainer ,
197204 }
198205 if err := tx .FirstOrCreate (& maintainer , model.Maintainer {Email : maintainer .Email }).Error ; err != nil {
199- return fmt .Errorf ("maintainerd-backend: loadMaintainersAndProjects - failed calling FirstOrCreate on maintainer %v: error %v" , maintainer , err )
206+ return fmt .Errorf ("ERR, loadMaintainersAndProjects - failed calling FirstOrCreate on maintainer %v: error %v" , maintainer , err )
200207 }
201208 // Ensure the association (in case the maintainer existed already)
202209 return tx .Model (& maintainer ).
203210 Association ("Projects" ).
204211 Append (& project )
205212 }); err != nil {
206- log .Printf ("TX not committed, row skipped %v : error %v " , row , err )
213+ log .Printf ("WARN, loadMaintainersAndProjects Database transaction not committed, row skipped %v : error %v " , row , err )
207214 }
208215 }
209216 return nil
@@ -336,8 +343,10 @@ func CreateServiceTeamsForUser(
336343 var teams []* model.ServiceTeam
337344 var errMessages []string
338345 s := NewSQLStore (db )
339- projects , _ := s .GetProjectMapByName ()
340-
346+ projects , err := s .GetProjectMapByName ()
347+ if err != nil {
348+ return nil , fmt .Errorf ("CreateServiceTeamsForUser: GetProjectMapByName failed to get project map: %v" , err )
349+ }
341350 for _ , team := range teamUsers {
342351 if project , ok := projects [team .Team .Name ]; ok {
343352 st := & model.ServiceTeam {
@@ -389,7 +398,7 @@ func MapFossaUserCollaborator(db *gorm.DB, email string, github string, user fos
389398 Where ("LOWER(git_hub_account) = ?" , strings .ToLower (github )).
390399 FirstOrCreate (& c ).Error ; err == nil {
391400 return & c
392- } else if err != nil {
401+ } else {
393402 return nil
394403 }
395404 }
@@ -398,12 +407,10 @@ func MapFossaUserCollaborator(db *gorm.DB, email string, github string, user fos
398407 Where ("LOWER(email) = ?" , strings .ToLower (email )).
399408 FirstOrCreate (& c ).Error ; err == nil {
400409 return & c
401- } else if err != nil {
410+ } else {
402411 log .Printf ("mapFossaUserCollaborator: error creating collaborator: %s, %+v %v" , email , c , err )
403412 return nil
404413 }
405-
406- return & c
407414}
408415
409416// MapFossaUserToMaintainer attempts to match a FOSSA user to a registered Maintainer.
@@ -526,7 +533,7 @@ func LinkServiceUserToTeam(
526533}
527534
528535func FirstOrCreateServiceUser (db * gorm.DB , user fossa.User ) (* model.ServiceUser , error ) {
529- var fossaService = model.Service {Model : gorm.Model {ID : 1 }, Name : "FOSSA" }
536+ var fossaService = model.Service {Model : gorm.Model {ID : 1 }}
530537
531538 var su model.ServiceUser
532539
0 commit comments