MCPcopy Create free account
hub / github.com/gogs/gogs / removeRepository

Method removeRepository

internal/database/org_team.go:153–219  ·  view source on GitHub ↗
(e Engine, repo *Repository, recalculate bool)

Source from the content-addressed store, hash-verified

151}
152
153func (t *Team) removeRepository(e Engine, repo *Repository, recalculate bool) (err error) {
154 if err = removeTeamRepo(e, t.ID, repo.ID); err != nil {
155 return err
156 }
157
158 t.NumRepos--
159 if _, err = e.ID(t.ID).AllCols().Update(t); err != nil {
160 return err
161 }
162
163 // Don't need to recalculate when delete a repository from organization.
164 if recalculate {
165 if err = repo.recalculateTeamAccesses(e, t.ID); err != nil {
166 return err
167 }
168 }
169
170 if err = t.getMembers(e); err != nil {
171 return errors.Newf("get team members: %v", err)
172 }
173
174 // TODO: Delete me when this method is migrated to use GORM.
175 userAccessMode := func(e Engine, userID int64, repo *Repository) (AccessMode, error) {
176 mode := AccessModeNone
177 // Everyone has read access to public repository
178 if !repo.IsPrivate {
179 mode = AccessModeRead
180 }
181
182 if userID <= 0 {
183 return mode, nil
184 }
185
186 if userID == repo.OwnerID {
187 return AccessModeOwner, nil
188 }
189
190 access := &Access{
191 UserID: userID,
192 RepoID: repo.ID,
193 }
194 if has, err := e.Get(access); !has || err != nil {
195 return mode, err
196 }
197 return access.Mode, nil
198 }
199
200 hasAccess := func(e Engine, userID int64, repo *Repository, testMode AccessMode) (bool, error) {
201 mode, err := userAccessMode(e, userID, repo)
202 return mode >= testMode, err
203 }
204
205 for _, member := range t.Members {
206 has, err := hasAccess(e, member.ID, repo, AccessModeRead)
207 if err != nil {
208 return err
209 } else if has {
210 continue

Callers 2

RemoveRepositoryMethod · 0.95
DeleteRepositoryFunction · 0.80

Calls 7

getMembersMethod · 0.95
removeTeamRepoFunction · 0.85
watchRepoFunction · 0.85
UpdateMethod · 0.65
IDMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected