@@ -32,6 +32,7 @@ import (
32
32
33
33
"github.com/Unknwon/cae/zip"
34
34
"github.com/Unknwon/com"
35
+ "github.com/go-xorm/builder"
35
36
"github.com/go-xorm/xorm"
36
37
"github.com/mcuadros/go-version"
37
38
"gopkg.in/ini.v1"
@@ -1841,51 +1842,51 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
1841
1842
return fmt .Errorf ("deleteBeans: %v" , err )
1842
1843
}
1843
1844
1844
- // Delete comments and attachments.
1845
- issueIDs := make ([]int64 , 0 , 25 )
1846
- attachmentPaths := make ([]string , 0 , len (issueIDs ))
1847
- if err = sess .
1848
- Table ("issue" ).
1849
- Cols ("id" ).
1850
- Where ("repo_id=?" , repoID ).
1851
- Find (& issueIDs ); err != nil {
1845
+ deleteCond := builder .Select ("id" ).From ("issue" ).Where (builder.Eq {"repo_id" : repoID })
1846
+ // Delete comments and attachments
1847
+ if _ , err = sess .In ("issue_id" , deleteCond ).
1848
+ Delete (& Comment {}); err != nil {
1852
1849
return err
1853
1850
}
1854
1851
1855
- if len (issueIDs ) > 0 {
1856
- if _ , err = sess .In ("issue_id" , issueIDs ).Delete (& Comment {}); err != nil {
1857
- return err
1858
- }
1859
- if _ , err = sess .In ("issue_id" , issueIDs ).Delete (& IssueUser {}); err != nil {
1860
- return err
1861
- }
1862
- if _ , err = sess .In ("issue_id" , issueIDs ).Delete (& Reaction {}); err != nil {
1863
- return err
1864
- }
1865
- if _ , err = sess .In ("issue_id" , issueIDs ).Delete (& IssueWatch {}); err != nil {
1866
- return err
1867
- }
1868
- if _ , err = sess .In ("issue_id" , issueIDs ).Delete (& Stopwatch {}); err != nil {
1869
- return err
1870
- }
1852
+ if _ , err = sess .In ("issue_id" , deleteCond ).
1853
+ Delete (& IssueUser {}); err != nil {
1854
+ return err
1855
+ }
1871
1856
1872
- attachments := make ([]* Attachment , 0 , 5 )
1873
- if err = sess .
1874
- In ("issue_id" , issueIDs ).
1875
- Find (& attachments ); err != nil {
1876
- return err
1877
- }
1878
- for j := range attachments {
1879
- attachmentPaths = append (attachmentPaths , attachments [j ].LocalPath ())
1880
- }
1857
+ if _ , err = sess .In ("issue_id" , deleteCond ).
1858
+ Delete (& Reaction {}); err != nil {
1859
+ return err
1860
+ }
1881
1861
1882
- if _ , err = sess .In ("issue_id" , issueIDs ).Delete (& Attachment {}); err != nil {
1883
- return err
1884
- }
1862
+ if _ , err = sess .In ("issue_id" , deleteCond ).
1863
+ Delete (& IssueWatch {}); err != nil {
1864
+ return err
1865
+ }
1885
1866
1886
- if _ , err = sess .Delete (& Issue {RepoID : repoID }); err != nil {
1887
- return err
1888
- }
1867
+ if _ , err = sess .In ("issue_id" , deleteCond ).
1868
+ Delete (& Stopwatch {}); err != nil {
1869
+ return err
1870
+ }
1871
+
1872
+ attachmentPaths := make ([]string , 0 , 20 )
1873
+ attachments := make ([]* Attachment , 0 , len (attachmentPaths ))
1874
+ if err = sess .Join ("INNER" , "issue" , "issue.id = attachment.issue_id" ).
1875
+ Where ("issue.repo_id = ?" , repoID ).
1876
+ Find (& attachments ); err != nil {
1877
+ return err
1878
+ }
1879
+ for j := range attachments {
1880
+ attachmentPaths = append (attachmentPaths , attachments [j ].LocalPath ())
1881
+ }
1882
+
1883
+ if _ , err = sess .In ("issue_id" , deleteCond ).
1884
+ Delete (& Attachment {}); err != nil {
1885
+ return err
1886
+ }
1887
+
1888
+ if _ , err = sess .Delete (& Issue {RepoID : repoID }); err != nil {
1889
+ return err
1889
1890
}
1890
1891
1891
1892
if _ , err = sess .Where ("repo_id = ?" , repoID ).Delete (new (RepoUnit )); err != nil {
0 commit comments