|
@@ -721,7 +721,7 @@ func GetRepositoryById(id int64) (*Repository, error) {
|
|
|
return repo, nil
|
|
|
}
|
|
|
|
|
|
-// GetRepositories returns the list of repositories of given user.
|
|
|
+// GetRepositories returns a list of repositories of given user.
|
|
|
func GetRepositories(user *User, private bool) ([]*Repository, error) {
|
|
|
repos := make([]*Repository, 0, 10)
|
|
|
sess := orm.Desc("updated")
|
|
@@ -758,6 +758,36 @@ func GetCollaboratorNames(repoName string) ([]string, error) {
|
|
|
return names, nil
|
|
|
}
|
|
|
|
|
|
+// GetCollaborativeRepos returns a list of repositories that user is collaborator.
|
|
|
+func GetCollaborativeRepos(uname string) ([]*Repository, error) {
|
|
|
+ uname = strings.ToLower(uname)
|
|
|
+ accesses := make([]*Access, 0, 10)
|
|
|
+ if err := orm.Find(&accesses, &Access{UserName: uname}); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ repos := make([]*Repository, 0, 10)
|
|
|
+ for _, access := range accesses {
|
|
|
+ if strings.HasPrefix(access.RepoName, uname) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ infos := strings.Split(access.RepoName, "/")
|
|
|
+ u, err := GetUserByName(infos[0])
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ repo, err := GetRepositoryByName(u.Id, infos[1])
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ repo.Owner = u
|
|
|
+ repos = append(repos, repo)
|
|
|
+ }
|
|
|
+ return repos, nil
|
|
|
+}
|
|
|
+
|
|
|
// GetCollaborators returns a list of users of repository's collaborators.
|
|
|
func GetCollaborators(repoName string) (us []*User, err error) {
|
|
|
accesses := make([]*Access, 0, 10)
|