@@ -68,10 +68,35 @@ func (org *User) GetTeams() error {
68
68
}
69
69
70
70
// GetMembers returns all members of organization.
71
- func (org * User ) GetMembers () error {
72
- ous , err := GetOrgUsersByOrgID (org .ID )
71
+ func (org * User ) GetMembers () (err error ) {
72
+ org .Members , org .MembersIsPublic , err = FindOrgMembers (FindOrgMembersOpts {
73
+ OrgID : org .ID ,
74
+ })
75
+ return
76
+ }
77
+
78
+ // FindOrgMembersOpts represensts find org members condtions
79
+ type FindOrgMembersOpts struct {
80
+ OrgID int64
81
+ PublicOnly bool
82
+ Start int
83
+ Limit int
84
+ }
85
+
86
+ // CountOrgMembers counts the organization's members
87
+ func CountOrgMembers (opts FindOrgMembersOpts ) (int64 , error ) {
88
+ sess := x .Where ("org_id=?" , opts .OrgID )
89
+ if opts .PublicOnly {
90
+ sess .And ("is_public = ?" , true )
91
+ }
92
+ return sess .Count (new (OrgUser ))
93
+ }
94
+
95
+ // FindOrgMembers loads organization members according conditions
96
+ func FindOrgMembers (opts FindOrgMembersOpts ) (UserList , map [int64 ]bool , error ) {
97
+ ous , err := GetOrgUsersByOrgID (opts .OrgID , opts .PublicOnly , opts .Start , opts .Limit )
73
98
if err != nil {
74
- return err
99
+ return nil , nil , err
75
100
}
76
101
77
102
var ids = make ([]int64 , len (ous ))
@@ -80,9 +105,12 @@ func (org *User) GetMembers() error {
80
105
ids [i ] = ou .UID
81
106
idsIsPublic [ou .UID ] = ou .IsPublic
82
107
}
83
- org .MembersIsPublic = idsIsPublic
84
- org .Members , err = GetUsersByIDs (ids )
85
- return err
108
+
109
+ users , err := GetUsersByIDs (ids )
110
+ if err != nil {
111
+ return nil , nil , err
112
+ }
113
+ return users , idsIsPublic , nil
86
114
}
87
115
88
116
// AddMember adds new member to organization.
@@ -467,15 +495,20 @@ func GetOrgUsersByUserID(uid int64, all bool) ([]*OrgUser, error) {
467
495
}
468
496
469
497
// GetOrgUsersByOrgID returns all organization-user relations by organization ID.
470
- func GetOrgUsersByOrgID (orgID int64 ) ([]* OrgUser , error ) {
471
- return getOrgUsersByOrgID (x , orgID )
498
+ func GetOrgUsersByOrgID (orgID int64 , publicOnly bool , start , limit int ) ([]* OrgUser , error ) {
499
+ return getOrgUsersByOrgID (x , orgID , publicOnly , start , limit )
472
500
}
473
501
474
- func getOrgUsersByOrgID (e Engine , orgID int64 ) ([]* OrgUser , error ) {
502
+ func getOrgUsersByOrgID (e Engine , orgID int64 , publicOnly bool , start , limit int ) ([]* OrgUser , error ) {
475
503
ous := make ([]* OrgUser , 0 , 10 )
476
- err := e .
477
- Where ("org_id=?" , orgID ).
478
- Find (& ous )
504
+ sess := e .Where ("org_id=?" , orgID )
505
+ if publicOnly {
506
+ sess .And ("is_public = ?" , true )
507
+ }
508
+ if limit > 0 {
509
+ sess .Limit (limit , start )
510
+ }
511
+ err := sess .Find (& ous )
479
512
return ous , err
480
513
}
481
514
0 commit comments