Skip to content

Commit

Permalink
delete Projects and related correctly on RepoDeletion -> adapt change…
Browse files Browse the repository at this point in the history
  • Loading branch information
6543 committed May 29, 2020
1 parent 13bf054 commit 6f49097
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 5 deletions.
5 changes: 5 additions & 0 deletions models/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -1983,6 +1983,11 @@ func deleteIssuesByRepoID(sess Engine, repoID int64) (attachmentPaths []string,
return
}

if _, err = sess.In("issue_id", deleteCond).
Delete(&ProjectIssues{}); err != nil {
return
}

var attachments []*Attachment
if err = sess.In("issue_id", deleteCond).
Find(&attachments); err != nil {
Expand Down
18 changes: 13 additions & 5 deletions models/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,14 @@ type ProjectSearchOptions struct {

// GetProjects returns a list of all projects that have been created in the repository
func GetProjects(opts ProjectSearchOptions) ([]*Project, error) {
return getProjects(x, opts)
}

func getProjects(e Engine, opts ProjectSearchOptions) ([]*Project, error) {

projects := make([]*Project, 0, setting.UI.IssuePagingNum)

sess := x.Where("repo_id = ?", opts.RepoID)
sess := e.Where("repo_id = ?", opts.RepoID)
switch opts.IsClosed {
case util.OptionalBoolTrue:
sess = sess.Where("is_closed = ?", true)
Expand Down Expand Up @@ -242,10 +246,6 @@ func DeleteProjectByID(id int64) error {
return err
}

if err := deleteProjectIssuesByProjectID(sess, id); err != nil {
return err
}

return sess.Commit()
}

Expand All @@ -263,6 +263,14 @@ func deleteProjectByID(e Engine, id int64) error {
return err
}

if err := deleteProjectIssuesByProjectID(e, id); err != nil {
return err
}

if err := deleteProjectBoardByProjectID(e, id); err != nil {
return err
}

if _, err = e.ID(p.ID).Delete(new(Project)); err != nil {
return err
}
Expand Down
5 changes: 5 additions & 0 deletions models/project_board.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,11 @@ func deleteProjectBoardByID(e Engine, boardID int64) error {
return nil
}

func deleteProjectBoardByProjectID(e Engine, projectID int64) error {
_, err := e.Where("project_id=?", projectID).Delete(&ProjectIssues{})
return err
}

// GetProjectBoard fetches the current board of a project
func GetProjectBoard(boardID int64) (*ProjectBoard, error) {
return getProjectBoard(x, boardID)
Expand Down
12 changes: 12 additions & 0 deletions models/repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -1637,6 +1637,18 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
}
}

if projects, err := getProjects(sess, ProjectSearchOptions{
RepoID: repoID,
}); err != nil {
return fmt.Errorf("get projects: %v", err)
} else {
for i := range projects {
if err := deleteProjectByID(sess, projects[i].ID); err != nil {
return fmt.Errorf("delete project [%d]: %v", projects[i].ID, err)
}
}
}

// FIXME: Remove repository files should be executed after transaction succeed.
repoPath := repo.RepoPath()
removeAllWithNotice(sess, "Delete repository files", repoPath)
Expand Down

0 comments on commit 6f49097

Please sign in to comment.