aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/org.go19
-rw-r--r--models/user.go15
2 files changed, 15 insertions, 19 deletions
diff --git a/models/org.go b/models/org.go
index 1deba7f4..9bf57ad9 100644
--- a/models/org.go
+++ b/models/org.go
@@ -303,16 +303,15 @@ func GetOwnedOrgsByUserIDDesc(userID int64, desc string) ([]*User, error) {
return getOwnedOrgsByUserID(sess.Desc(desc), userID)
}
-// GetOrgUsersByUserID returns all organization-user relations by user ID.
-func GetOrgUsersByUserID(uid int64, all bool) ([]*OrgUser, error) {
- ous := make([]*OrgUser, 0, 10)
- sess := x.Where("uid=?", uid)
- if !all {
- // Only show public organizations
- sess.And("is_public=?", true)
- }
- err := sess.Find(&ous)
- return ous, err
+// GetOrgIDsByUserID returns a list of organization IDs that user belongs to.
+// The showPrivate indicates whether to include private memberships.
+func GetOrgIDsByUserID(userID int64, showPrivate bool) ([]int64, error) {
+ orgIDs := make([]int64, 0, 5)
+ sess := x.Table("org_user").Where("uid = ?", userID)
+ if !showPrivate {
+ sess.And("is_public = ?", true)
+ }
+ return orgIDs, sess.Distinct("org_id").Find(&orgIDs)
}
func getOrgUsersByOrgID(e Engine, orgID int64) ([]*OrgUser, error) {
diff --git a/models/user.go b/models/user.go
index 5c93b077..02c192d2 100644
--- a/models/user.go
+++ b/models/user.go
@@ -448,18 +448,15 @@ func (u *User) GetOwnedOrganizations() (err error) {
}
// GetOrganizations returns all organizations that user belongs to.
-func (u *User) GetOrganizations(all bool) error {
- ous, err := GetOrgUsersByUserID(u.ID, all)
+func (u *User) GetOrganizations(showPrivate bool) error {
+ orgIDs, err := GetOrgIDsByUserID(u.ID, showPrivate)
if err != nil {
- return err
+ return fmt.Errorf("GetOrgIDsByUserID: %v", err)
}
- u.Orgs = make([]*User, len(ous))
- for i, ou := range ous {
- u.Orgs[i], err = GetUserByID(ou.OrgID)
- if err != nil {
- return err
- }
+ u.Orgs = make([]*User, 0, len(orgIDs))
+ if err = x.In("id", orgIDs).Find(&u.Orgs); err != nil {
+ return err
}
return nil
}