DeleteRepository deletes a repository for a user or organization.
(ownerID, repoID int64)
| 1641 | |
| 1642 | // DeleteRepository deletes a repository for a user or organization. |
| 1643 | func DeleteRepository(ownerID, repoID int64) error { |
| 1644 | repo := &Repository{ID: repoID, OwnerID: ownerID} |
| 1645 | has, err := x.Get(repo) |
| 1646 | if err != nil { |
| 1647 | return err |
| 1648 | } else if !has { |
| 1649 | return ErrRepoNotExist{args: map[string]any{"ownerID": ownerID, "repoID": repoID}} |
| 1650 | } |
| 1651 | |
| 1652 | // In case is a organization. |
| 1653 | org, err := Handle.Users().GetByID(context.TODO(), ownerID) |
| 1654 | if err != nil { |
| 1655 | return err |
| 1656 | } |
| 1657 | if org.IsOrganization() { |
| 1658 | if err = org.GetTeams(); err != nil { |
| 1659 | return err |
| 1660 | } |
| 1661 | } |
| 1662 | |
| 1663 | sess := x.NewSession() |
| 1664 | defer sess.Close() |
| 1665 | if err = sess.Begin(); err != nil { |
| 1666 | return err |
| 1667 | } |
| 1668 | |
| 1669 | if org.IsOrganization() { |
| 1670 | for _, t := range org.Teams { |
| 1671 | if !t.hasRepository(sess, repoID) { |
| 1672 | continue |
| 1673 | } else if err = t.removeRepository(sess, repo, false); err != nil { |
| 1674 | return err |
| 1675 | } |
| 1676 | } |
| 1677 | } |
| 1678 | |
| 1679 | if err = deleteBeans(sess, |
| 1680 | &Repository{ID: repoID}, |
| 1681 | &Access{RepoID: repo.ID}, |
| 1682 | &Action{RepoID: repo.ID}, |
| 1683 | &Watch{RepoID: repoID}, |
| 1684 | &Star{RepoID: repoID}, |
| 1685 | &Mirror{RepoID: repoID}, |
| 1686 | &IssueUser{RepoID: repoID}, |
| 1687 | &Milestone{RepoID: repoID}, |
| 1688 | &Release{RepoID: repoID}, |
| 1689 | &Collaboration{RepoID: repoID}, |
| 1690 | &PullRequest{BaseRepoID: repoID}, |
| 1691 | &ProtectBranch{RepoID: repoID}, |
| 1692 | &ProtectBranchWhitelist{RepoID: repoID}, |
| 1693 | &Webhook{RepoID: repoID}, |
| 1694 | &HookTask{RepoID: repoID}, |
| 1695 | &LFSObject{RepoID: repoID}, |
| 1696 | ); err != nil { |
| 1697 | return errors.Newf("deleteBeans: %v", err) |
| 1698 | } |
| 1699 | |
| 1700 | // Delete comments and attachments. |
no test coverage detected