@@ -1747,8 +1747,8 @@ func GetRepoIssueStats(repoID, uid int64, filterMode int, isPull bool) (numOpen
1747
1747
}
1748
1748
1749
1749
// SearchIssueIDsByKeyword search issues on database
1750
- func SearchIssueIDsByKeyword (kw string , repoID int64 , limit , start int ) (int64 , []int64 , error ) {
1751
- var repoCond = builder.Eq { "repo_id" : repoID }
1750
+ func SearchIssueIDsByKeyword (kw string , repoIDs [] int64 , limit , start int ) (int64 , []int64 , error ) {
1751
+ var repoCond = builder .In ( "repo_id" , repoIDs )
1752
1752
var subQuery = builder .Select ("id" ).From ("issue" ).Where (repoCond )
1753
1753
var cond = builder .And (
1754
1754
repoCond ,
@@ -1820,33 +1820,69 @@ func UpdateIssueDeadline(issue *Issue, deadlineUnix util.TimeStamp, doer *User)
1820
1820
return sess .Commit ()
1821
1821
}
1822
1822
1823
+ // DependencyInfo represents high level information about an issue which is a dependency of another issue.
1824
+ type DependencyInfo struct {
1825
+ ID int64 `xorm:"id"`
1826
+ RepoID int64 `xorm:"repo_id"`
1827
+ Index int64 `xorm:"index"`
1828
+ IsClosed bool `xorm:"is_closed"`
1829
+ Title string `xorm:"name"`
1830
+ RepoLink string `xorm:"-"`
1831
+ }
1832
+
1823
1833
// Get Blocked By Dependencies, aka all issues this issue is blocked by.
1824
- func (issue * Issue ) getBlockedByDependencies (e Engine ) (issueDeps []* Issue , err error ) {
1825
- return issueDeps , e .
1826
- Table ("issue_dependency" ).
1827
- Select ("issue.*" ).
1834
+ func (issue * Issue ) getBlockedByDependencies (e Engine ) (issueDeps []* DependencyInfo , err error ) {
1835
+ err = e .Table ("issue_dependency" ).
1836
+ Select ("issue.id, issue.repo_id, issue.index, issue.is_closed, issue.name" ).
1828
1837
Join ("INNER" , "issue" , "issue.id = issue_dependency.dependency_id" ).
1829
1838
Where ("issue_id = ?" , issue .ID ).
1830
1839
Find (& issueDeps )
1840
+
1841
+ if err != nil {
1842
+ return nil , err
1843
+ }
1844
+
1845
+ for i := 0 ; i < len (issueDeps ); i ++ {
1846
+ repo , err := GetRepositoryByID (issueDeps [i ].RepoID )
1847
+ if err != nil {
1848
+ return nil , err
1849
+ }
1850
+ issueDeps [i ].RepoLink = repo .Link ()
1851
+ }
1852
+
1853
+ return issueDeps , nil
1831
1854
}
1832
1855
1833
1856
// Get Blocking Dependencies, aka all issues this issue blocks.
1834
- func (issue * Issue ) getBlockingDependencies (e Engine ) (issueDeps []* Issue , err error ) {
1835
- return issueDeps , e .
1836
- Table ("issue_dependency" ).
1837
- Select ("issue.*" ).
1857
+ func (issue * Issue ) getBlockingDependencies (e Engine ) (issueDeps []* DependencyInfo , err error ) {
1858
+ err = e .Table ("issue_dependency" ).
1859
+ Select ("issue.id, issue.repo_id, issue.index, issue.is_closed, issue.name" ).
1838
1860
Join ("INNER" , "issue" , "issue.id = issue_dependency.issue_id" ).
1839
1861
Where ("dependency_id = ?" , issue .ID ).
1840
1862
Find (& issueDeps )
1863
+
1864
+ if err != nil {
1865
+ return nil , err
1866
+ }
1867
+
1868
+ for i := 0 ; i < len (issueDeps ); i ++ {
1869
+ repo , err := GetRepositoryByID (issueDeps [i ].RepoID )
1870
+ if err != nil {
1871
+ return nil , err
1872
+ }
1873
+ issueDeps [i ].RepoLink = repo .Link ()
1874
+ }
1875
+
1876
+ return issueDeps , nil
1841
1877
}
1842
1878
1843
1879
// BlockedByDependencies finds all Dependencies an issue is blocked by
1844
- func (issue * Issue ) BlockedByDependencies () ([]* Issue , error ) {
1880
+ func (issue * Issue ) BlockedByDependencies () ([]* DependencyInfo , error ) {
1845
1881
return issue .getBlockedByDependencies (x )
1846
1882
}
1847
1883
1848
1884
// BlockingDependencies returns all blocking dependencies, aka all other issues a given issue blocks
1849
- func (issue * Issue ) BlockingDependencies () ([]* Issue , error ) {
1885
+ func (issue * Issue ) BlockingDependencies () ([]* DependencyInfo , error ) {
1850
1886
return issue .getBlockingDependencies (x )
1851
1887
}
1852
1888
0 commit comments