MCPcopy Index your code
hub / github.com/apache/devlake / DeleteProject

Function DeleteProject

backend/server/services/project.go:351–403  ·  view source on GitHub ↗

DeleteProject FIXME ...

(name string)

Source from the content-addressed store, hash-verified

349
350// DeleteProject FIXME ...
351func DeleteProject(name string) errors.Error {
352 // verify input
353 if name == "" {
354 return errors.BadInput.New("project name is missing")
355 }
356 // verify exists
357 _, err := getProjectByName(db, name)
358 if err != nil {
359 return err
360 }
361 // make sure there is no running pipelines in current projects
362 pipelinesAreUnfinished, err := thereAreUnfinishedPipelinesUnderProject(name)
363 if err != nil {
364 return err
365 }
366 if pipelinesAreUnfinished {
367 return errors.Default.New("There are unfinished pipelines in the current project. It cannot be deleted at this time.")
368 }
369 err = deleteProjectBlueprint(name)
370 if err != nil {
371 return err
372 }
373 tx := db.Begin()
374 defer func() {
375 if r := recover(); r != nil || err != nil {
376 err = tx.Rollback()
377 if err != nil {
378 logger.Error(err, "DeleteProject: failed to rollback")
379 }
380 }
381 }()
382 err = tx.Delete(&models.Project{}, dal.Where("name = ?", name))
383 if err != nil {
384 return errors.Default.Wrap(err, "error deleting project")
385 }
386 err = tx.Delete(&crossdomain.ProjectMapping{}, dal.Where("project_name = ?", name))
387 if err != nil {
388 return errors.Default.Wrap(err, "error deleting project")
389 }
390 err = tx.Delete(&models.ProjectMetricSetting{}, dal.Where("project_name = ?", name))
391 if err != nil {
392 return errors.Default.Wrap(err, "error deleting project metric setting")
393 }
394 err = tx.Delete(&crossdomain.ProjectPrMetric{}, dal.Where("project_name = ?", name))
395 if err != nil {
396 return errors.Default.Wrap(err, "error deleting project PR metric")
397 }
398 err = tx.Delete(&crossdomain.ProjectIncidentDeploymentRelationship{}, dal.Where("project_name = ?", name))
399 if err != nil {
400 return errors.Default.Wrap(err, "error deleting project Issue metric")
401 }
402 return tx.Commit()
403}
404
405func deleteProjectBlueprint(projectName string) errors.Error {
406 bp, err := bpManager.GetDbBlueprintByProjectName(projectName)

Callers

nothing calls this directly

Calls 10

getProjectByNameFunction · 0.85
deleteProjectBlueprintFunction · 0.85
WrapMethod · 0.80
NewMethod · 0.65
BeginMethod · 0.65
RollbackMethod · 0.65
ErrorMethod · 0.65
DeleteMethod · 0.65
CommitMethod · 0.65

Tested by

no test coverage detected