From e9ebba3f3ca8b96c6879445ab0d671daa17c6a5c Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 3 Dec 2019 03:35:59 +0100 Subject: [PATCH 1/2] WIP status --- models/issue.go | 1 + models/repo.go | 9 +++++++++ routers/user/home.go | 47 ++++++++++++++++++++++++++++---------------- 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/models/issue.go b/models/issue.go index 0a08a97fdd35b..fc0b8208e9605 100644 --- a/models/issue.go +++ b/models/issue.go @@ -1289,6 +1289,7 @@ type IssueStats struct { // Filter modes. const ( FilterModeAll = iota + FilterModeOwn FilterModeAssign FilterModeCreate FilterModeMention diff --git a/models/repo.go b/models/repo.go index 347c9095794f3..33f56209a36c1 100644 --- a/models/repo.go +++ b/models/repo.go @@ -2210,6 +2210,15 @@ func GetUserRepositories(userID int64, private bool, page, pageSize int, orderBy return repos, sess.Find(&repos) } +// GetUserRepositoryIDs return int64 list if all repos a user/org has +func GetUserRepositoryIDs(userID int64) (repoIDs []int64, err error){ + var u User{ + + } + err = x.Find(repoIDs) + return +} + // GetUserMirrorRepositories returns a list of mirror repositories of given user. func GetUserMirrorRepositories(userID int64) ([]*Repository, error) { repos := make([]*Repository, 0, 10) diff --git a/routers/user/home.go b/routers/user/home.go index 216f91e4dbade..2793ec2579392 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -182,6 +182,8 @@ func Issues(ctx *context.Context) { } else { viewType = ctx.Query("type") switch viewType { + case "your_repositories": + filterMode = models.FilterModeOwn case "assigned": filterMode = models.FilterModeAssign case "created_by": @@ -220,21 +222,18 @@ func Issues(ctx *context.Context) { isShowClosed := ctx.Query("state") == "closed" - // Get repositories. - var err error - var userRepoIDs []int64 + var userRepoIDs []int64 // TO REMOVE + var err error // TO REMOVE + + // Get repository id's for FilterModeAll and FilterModeOwn + var ownRepoIDs []int64 + var allRepoIDs []int64 if ctxUser.IsOrganization() { - env, err := ctxUser.AccessibleReposEnv(ctx.User.ID) - if err != nil { - ctx.ServerError("AccessibleReposEnv", err) - return - } - userRepoIDs, err = env.RepoIDs(1, ctxUser.NumRepos) - if err != nil { - ctx.ServerError("env.RepoIDs", err) - return - } + ownRepoIDs, _ := models.GetUserRepositoryIDs(ctxUser.ID) + fmt.Println("BBBBBBBBBBs: ", ownRepoIDs) + allRepoIDs = ownRepoIDs } else { + /* unitType := models.UnitTypeIssues if isPullList { unitType = models.UnitTypePullRequests @@ -244,9 +243,12 @@ func Issues(ctx *context.Context) { ctx.ServerError("ctxUser.GetAccessRepoIDs", err) return } - } - if len(userRepoIDs) == 0 { - userRepoIDs = []int64{-1} + */ + ownRepoIDs, _ := models.GetUserRepositoryIDs(ctxUser.ID) + + models.GetRepo + allRepoIDs + fmt.Println("BBBBBBBBBBs: ", ownRepoIDs) // thats how i degugg at runtime for now (not the best wax i know ...) } opts := &models.IssuesOptions{ @@ -257,7 +259,17 @@ func Issues(ctx *context.Context) { switch filterMode { case models.FilterModeAll: - opts.RepoIDs = userRepoIDs + if len(allRepoIDs) == 0 { + opts.RepoIDs = []int64{-1} + } else { + opts.RepoIDs = allRepoIDs + } + case models.FilterModeOwn: + if len(ownRepoIDs) == 0 { + opts.RepoIDs = []int64{-1} + } else { + opts.RepoIDs = ownRepoIDs + } case models.FilterModeAssign: opts.AssigneeID = ctxUser.ID case models.FilterModeCreate: @@ -266,6 +278,7 @@ func Issues(ctx *context.Context) { opts.MentionedID = ctxUser.ID } + fmt.Println("AAAAAAAAAAAAAAAAAAAAa: ", opts.RepoIDs) // thats how i degugg at runtime for now (not the best wax i know ...) counts, err := models.CountIssuesByRepo(opts) if err != nil { ctx.ServerError("CountIssuesByRepo", err) From fa66c07251ac2bd46cfe463a65fbaf81920fedaa Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 3 Dec 2019 03:50:12 +0100 Subject: [PATCH 2/2] m ja --- models/repo.go | 13 +++++++++++-- routers/user/home.go | 8 ++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/models/repo.go b/models/repo.go index 33f56209a36c1..a169f84b5d18f 100644 --- a/models/repo.go +++ b/models/repo.go @@ -2212,10 +2212,19 @@ func GetUserRepositories(userID int64, private bool, page, pageSize int, orderBy // GetUserRepositoryIDs return int64 list if all repos a user/org has func GetUserRepositoryIDs(userID int64) (repoIDs []int64, err error){ - var u User{ + sess := x.NewSession() + defer sess.Close() + + idSlice := make([]*struct { + RepoID int64 + }, 0, 10) + if err := sess.Table("repository").And("owner_id=?", userID).Find(&idSlice); err != nil { + return nil, err + } + for _, c := range idSlice { + repoIDs = append(repoIDs, c.RepoID) } - err = x.Find(repoIDs) return } diff --git a/routers/user/home.go b/routers/user/home.go index 2793ec2579392..4a9211383e6f8 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -246,8 +246,12 @@ func Issues(ctx *context.Context) { */ ownRepoIDs, _ := models.GetUserRepositoryIDs(ctxUser.ID) - models.GetRepo - allRepoIDs + unitType := models.UnitTypeIssues + if isPullList { + unitType = models.UnitTypePullRequests + } + + allRepoIDs, err = ctxUser.GetAccessRepoIDs(unitType) fmt.Println("BBBBBBBBBBs: ", ownRepoIDs) // thats how i degugg at runtime for now (not the best wax i know ...) }