Skip to content

Commit b891775

Browse files
committed
Move more methods out of repository
1 parent 038d714 commit b891775

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+216
-224
lines changed

integrations/mirror_pull_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func TestMirrorPull(t *testing.T) {
7373
IsTag: true,
7474
}, nil, ""))
7575

76-
err = mirror.GetMirror()
76+
_, err = models.GetMirrorByRepoID(mirror.ID)
7777
assert.NoError(t, err)
7878

7979
ok := mirror_service.SyncPullMirror(ctx, mirror.ID)

models/gpg_key_commit_verification.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -493,11 +493,11 @@ func CalculateTrustStatus(verification *CommitVerification, repository *Reposito
493493
var has bool
494494
isMember, has = (*keyMap)[verification.SigningKey.KeyID]
495495
if !has {
496-
isMember, err = repository.IsOwnerMemberCollaborator(verification.SigningUser.ID)
496+
isMember, err = IsOwnerMemberCollaborator(repository, verification.SigningUser.ID)
497497
(*keyMap)[verification.SigningKey.KeyID] = isMember
498498
}
499499
} else {
500-
isMember, err = repository.IsOwnerMemberCollaborator(verification.SigningUser.ID)
500+
isMember, err = IsOwnerMemberCollaborator(repository, verification.SigningUser.ID)
501501
}
502502

503503
if !isMember {

models/notification.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,10 @@ func createOrUpdateIssueNotifications(e db.Engine, issueID, commentID, notificat
267267

268268
return err
269269
}
270-
if issue.IsPull && !issue.Repo.checkUnitUser(e, user, unit.TypePullRequests) {
270+
if issue.IsPull && !checkUnitUser(e, issue.Repo, user, unit.TypePullRequests) {
271271
continue
272272
}
273-
if !issue.IsPull && !issue.Repo.checkUnitUser(e, user, unit.TypeIssues) {
273+
if !issue.IsPull && !checkUnitUser(e, issue.Repo, user, unit.TypeIssues) {
274274
continue
275275
}
276276

models/org_team.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -899,12 +899,12 @@ func removeTeamMember(ctx context.Context, team *Team, userID int64) error {
899899
}
900900

901901
// Remove watches from now unaccessible
902-
if err := repo.reconsiderWatches(e, userID); err != nil {
902+
if err := reconsiderWatches(e, repo, userID); err != nil {
903903
return err
904904
}
905905

906906
// Remove issue assignments from now unaccessible
907-
if err := repo.reconsiderIssueAssignees(e, userID); err != nil {
907+
if err := reconsiderIssueAssignees(e, repo, userID); err != nil {
908908
return err
909909
}
910910
}

models/protected_tag.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,28 @@ func init() {
3333
db.RegisterModel(new(ProtectedTag))
3434
}
3535

36+
// EnsureCompiledPattern ensures the glob pattern is compiled
37+
func (pt *ProtectedTag) EnsureCompiledPattern() error {
38+
if pt.RegexPattern != nil || pt.GlobPattern != nil {
39+
return nil
40+
}
41+
42+
var err error
43+
if len(pt.NamePattern) >= 2 && strings.HasPrefix(pt.NamePattern, "/") && strings.HasSuffix(pt.NamePattern, "/") {
44+
pt.RegexPattern, err = regexp.Compile(pt.NamePattern[1 : len(pt.NamePattern)-1])
45+
} else {
46+
pt.GlobPattern, err = glob.Compile(pt.NamePattern)
47+
}
48+
return err
49+
}
50+
51+
func (pt *ProtectedTag) matchString(name string) bool {
52+
if pt.RegexPattern != nil {
53+
return pt.RegexPattern.MatchString(name)
54+
}
55+
return pt.GlobPattern.Match(name)
56+
}
57+
3658
// InsertProtectedTag inserts a protected tag to database
3759
func InsertProtectedTag(pt *ProtectedTag) error {
3860
_, err := db.GetEngine(db.DefaultContext).Insert(pt)
@@ -51,23 +73,8 @@ func DeleteProtectedTag(pt *ProtectedTag) error {
5173
return err
5274
}
5375

54-
// EnsureCompiledPattern ensures the glob pattern is compiled
55-
func (pt *ProtectedTag) EnsureCompiledPattern() error {
56-
if pt.RegexPattern != nil || pt.GlobPattern != nil {
57-
return nil
58-
}
59-
60-
var err error
61-
if len(pt.NamePattern) >= 2 && strings.HasPrefix(pt.NamePattern, "/") && strings.HasSuffix(pt.NamePattern, "/") {
62-
pt.RegexPattern, err = regexp.Compile(pt.NamePattern[1 : len(pt.NamePattern)-1])
63-
} else {
64-
pt.GlobPattern, err = glob.Compile(pt.NamePattern)
65-
}
66-
return err
67-
}
68-
69-
// IsUserAllowed returns true if the user is allowed to modify the tag
70-
func (pt *ProtectedTag) IsUserAllowed(userID int64) (bool, error) {
76+
// IsUserAllowedModifyTag returns true if the user is allowed to modify the tag
77+
func IsUserAllowedModifyTag(pt *ProtectedTag, userID int64) (bool, error) {
7178
if base.Int64sContains(pt.AllowlistUserIDs, userID) {
7279
return true, nil
7380
}
@@ -84,9 +91,9 @@ func (pt *ProtectedTag) IsUserAllowed(userID int64) (bool, error) {
8491
}
8592

8693
// GetProtectedTags gets all protected tags of the repository
87-
func (repo *Repository) GetProtectedTags() ([]*ProtectedTag, error) {
94+
func GetProtectedTags(repoID int64) ([]*ProtectedTag, error) {
8895
tags := make([]*ProtectedTag, 0)
89-
return tags, db.GetEngine(db.DefaultContext).Find(&tags, &ProtectedTag{RepoID: repo.ID})
96+
return tags, db.GetEngine(db.DefaultContext).Find(&tags, &ProtectedTag{RepoID: repoID})
9097
}
9198

9299
// GetProtectedTagByID gets the protected tag with the specific id
@@ -116,7 +123,7 @@ func IsUserAllowedToControlTag(tags []*ProtectedTag, tagName string, userID int6
116123
continue
117124
}
118125

119-
isAllowed, err = tag.IsUserAllowed(userID)
126+
isAllowed, err = IsUserAllowedModifyTag(tag, userID)
120127
if err != nil {
121128
return false, err
122129
}
@@ -127,10 +134,3 @@ func IsUserAllowedToControlTag(tags []*ProtectedTag, tagName string, userID int6
127134

128135
return isAllowed, nil
129136
}
130-
131-
func (pt *ProtectedTag) matchString(name string) bool {
132-
if pt.RegexPattern != nil {
133-
return pt.RegexPattern.MatchString(name)
134-
}
135-
return pt.GlobPattern.Match(name)
136-
}

models/protected_tag_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,41 @@ func TestIsUserAllowed(t *testing.T) {
1616
assert.NoError(t, unittest.PrepareTestDatabase())
1717

1818
pt := &ProtectedTag{}
19-
allowed, err := pt.IsUserAllowed(1)
19+
allowed, err := IsUserAllowedModifyTag(pt, 1)
2020
assert.NoError(t, err)
2121
assert.False(t, allowed)
2222

2323
pt = &ProtectedTag{
2424
AllowlistUserIDs: []int64{1},
2525
}
26-
allowed, err = pt.IsUserAllowed(1)
26+
allowed, err = IsUserAllowedModifyTag(pt, 1)
2727
assert.NoError(t, err)
2828
assert.True(t, allowed)
2929

30-
allowed, err = pt.IsUserAllowed(2)
30+
allowed, err = IsUserAllowedModifyTag(pt, 2)
3131
assert.NoError(t, err)
3232
assert.False(t, allowed)
3333

3434
pt = &ProtectedTag{
3535
AllowlistTeamIDs: []int64{1},
3636
}
37-
allowed, err = pt.IsUserAllowed(1)
37+
allowed, err = IsUserAllowedModifyTag(pt, 1)
3838
assert.NoError(t, err)
3939
assert.False(t, allowed)
4040

41-
allowed, err = pt.IsUserAllowed(2)
41+
allowed, err = IsUserAllowedModifyTag(pt, 2)
4242
assert.NoError(t, err)
4343
assert.True(t, allowed)
4444

4545
pt = &ProtectedTag{
4646
AllowlistUserIDs: []int64{1},
4747
AllowlistTeamIDs: []int64{1},
4848
}
49-
allowed, err = pt.IsUserAllowed(1)
49+
allowed, err = IsUserAllowedModifyTag(pt, 1)
5050
assert.NoError(t, err)
5151
assert.True(t, allowed)
5252

53-
allowed, err = pt.IsUserAllowed(2)
53+
allowed, err = IsUserAllowedModifyTag(pt, 2)
5454
assert.NoError(t, err)
5555
assert.True(t, allowed)
5656
}

models/repo.go

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -219,13 +219,12 @@ type Repository struct {
219219
NumClosedProjects int `xorm:"NOT NULL DEFAULT 0"`
220220
NumOpenProjects int `xorm:"-"`
221221

222-
IsPrivate bool `xorm:"INDEX"`
223-
IsEmpty bool `xorm:"INDEX"`
224-
IsArchived bool `xorm:"INDEX"`
225-
IsMirror bool `xorm:"INDEX"`
226-
*Mirror `xorm:"-"`
227-
PushMirrors []*PushMirror `xorm:"-"`
228-
Status RepositoryStatus `xorm:"NOT NULL DEFAULT 0"`
222+
IsPrivate bool `xorm:"INDEX"`
223+
IsEmpty bool `xorm:"INDEX"`
224+
IsArchived bool `xorm:"INDEX"`
225+
IsMirror bool `xorm:"INDEX"`
226+
*Mirror `xorm:"-"`
227+
Status RepositoryStatus `xorm:"NOT NULL DEFAULT 0"`
229228

230229
RenderingMetas map[string]string `xorm:"-"`
231230
DocumentRenderingMetas map[string]string `xorm:"-"`
@@ -237,7 +236,6 @@ type Repository struct {
237236
BaseRepo *Repository `xorm:"-"`
238237
IsTemplate bool `xorm:"INDEX NOT NULL DEFAULT false"`
239238
TemplateID int64 `xorm:"INDEX"`
240-
TemplateRepo *Repository `xorm:"-"`
241239
Size int64 `xorm:"NOT NULL DEFAULT 0"`
242240
CodeIndexerStatus *RepoIndexerStatus `xorm:"-"`
243241
StatsIndexerStatus *RepoIndexerStatus `xorm:"-"`
@@ -363,11 +361,11 @@ func (repo *Repository) getUnits(e db.Engine) (err error) {
363361
}
364362

365363
// CheckUnitUser check whether user could visit the unit of this repository
366-
func (repo *Repository) CheckUnitUser(user *user_model.User, unitType unit.Type) bool {
367-
return repo.checkUnitUser(db.GetEngine(db.DefaultContext), user, unitType)
364+
func CheckUnitUser(repo *Repository, user *user_model.User, unitType unit.Type) bool {
365+
return checkUnitUser(db.GetEngine(db.DefaultContext), repo, user, unitType)
368366
}
369367

370-
func (repo *Repository) checkUnitUser(e db.Engine, user *user_model.User, unitType unit.Type) bool {
368+
func checkUnitUser(e db.Engine, repo *Repository, user *user_model.User, unitType unit.Type) bool {
371369
if user.IsAdmin {
372370
return true
373371
}
@@ -643,18 +641,6 @@ func GetReviewerTeams(repo *Repository) ([]*Team, error) {
643641
return teams, err
644642
}
645643

646-
// GetMirror sets the repository mirror, returns an error upon failure
647-
func (repo *Repository) GetMirror() (err error) {
648-
repo.Mirror, err = GetMirrorByRepoID(repo.ID)
649-
return err
650-
}
651-
652-
// LoadPushMirrors populates the repository push mirrors.
653-
func (repo *Repository) LoadPushMirrors() (err error) {
654-
repo.PushMirrors, err = GetPushMirrorsByRepoID(repo.ID)
655-
return err
656-
}
657-
658644
// GetBaseRepo populates repo.BaseRepo for a fork repository and
659645
// returns an error on failure (NOTE: no error is returned for
660646
// non-fork repositories, and BaseRepo will be left untouched)
@@ -679,17 +665,16 @@ func (repo *Repository) IsGenerated() bool {
679665
// GetTemplateRepo populates repo.TemplateRepo for a generated repository and
680666
// returns an error on failure (NOTE: no error is returned for
681667
// non-generated repositories, and TemplateRepo will be left untouched)
682-
func (repo *Repository) GetTemplateRepo() (err error) {
683-
return repo.getTemplateRepo(db.GetEngine(db.DefaultContext))
668+
func GetTemplateRepo(repo *Repository) (*Repository, error) {
669+
return getTemplateRepo(db.GetEngine(db.DefaultContext), repo)
684670
}
685671

686-
func (repo *Repository) getTemplateRepo(e db.Engine) (err error) {
672+
func getTemplateRepo(e db.Engine, repo *Repository) (*Repository, error) {
687673
if !repo.IsGenerated() {
688-
return nil
674+
return nil, nil
689675
}
690676

691-
repo.TemplateRepo, err = getRepositoryByID(e, repo.TemplateID)
692-
return err
677+
return getRepositoryByID(e, repo.TemplateID)
693678
}
694679

695680
// RepoPath returns the repository path
@@ -718,7 +703,7 @@ func (repo *Repository) ComposeCompareURL(oldCommitID, newCommitID string) strin
718703
}
719704

720705
// UpdateDefaultBranch updates the default branch
721-
func (repo *Repository) UpdateDefaultBranch() error {
706+
func UpdateDefaultBranch(repo *Repository) error {
722707
_, err := db.GetEngine(db.DefaultContext).ID(repo.ID).Cols("default_branch").Update(repo)
723708
return err
724709
}
@@ -728,6 +713,11 @@ func (repo *Repository) IsOwnedBy(userID int64) bool {
728713
return repo.OwnerID == userID
729714
}
730715

716+
// CanCreateBranch returns true if repository meets the requirements for creating new branches.
717+
func (repo *Repository) CanCreateBranch() bool {
718+
return !repo.IsMirror
719+
}
720+
731721
func updateRepoSize(e db.Engine, repo *Repository) error {
732722
size, err := util.GetDirectorySize(repo.RepoPath())
733723
if err != nil {
@@ -770,7 +760,7 @@ func CanUserForkRepo(user *user_model.User, repo *Repository) (bool, error) {
770760
}
771761

772762
// CanUserDelete returns true if user could delete the repository
773-
func (repo *Repository) CanUserDelete(user *user_model.User) (bool, error) {
763+
func CanUserDelete(repo *Repository, user *user_model.User) (bool, error) {
774764
if user.IsAdmin || user.ID == repo.OwnerID {
775765
return true, nil
776766
}
@@ -868,9 +858,9 @@ func (repo *Repository) DescriptionHTML() template.HTML {
868858
return template.HTML(markup.Sanitize(string(desc)))
869859
}
870860

871-
// ReadBy sets repo to be visited by given user.
872-
func (repo *Repository) ReadBy(userID int64) error {
873-
return setRepoNotificationStatusReadIfUnread(db.GetEngine(db.DefaultContext), userID, repo.ID)
861+
// SetRepoReadBy sets repo to be visited by given user.
862+
func SetRepoReadBy(repoID, userID int64) error {
863+
return setRepoNotificationStatusReadIfUnread(db.GetEngine(db.DefaultContext), userID, repoID)
874864
}
875865

876866
func isRepositoryExist(e db.Engine, u *user_model.User, repoName string) (bool, error) {
@@ -1131,10 +1121,10 @@ func CreateRepository(ctx context.Context, doer, u *user_model.User, repo *Repos
11311121
return fmt.Errorf("isUserRepoAdmin: %v", err)
11321122
} else if !isAdmin {
11331123
// Make creator repo admin if it wan't assigned automatically
1134-
if err = repo.addCollaborator(db.GetEngine(ctx), doer); err != nil {
1124+
if err = addCollaborator(db.GetEngine(ctx), repo, doer); err != nil {
11351125
return fmt.Errorf("AddCollaborator: %v", err)
11361126
}
1137-
if err = repo.changeCollaborationAccessMode(db.GetEngine(ctx), doer.ID, perm.AccessModeAdmin); err != nil {
1127+
if err = changeCollaborationAccessMode(db.GetEngine(ctx), repo, doer.ID, perm.AccessModeAdmin); err != nil {
11381128
return fmt.Errorf("ChangeCollaborationAccessMode: %v", err)
11391129
}
11401130
}
@@ -1157,7 +1147,7 @@ func CreateRepository(ctx context.Context, doer, u *user_model.User, repo *Repos
11571147
}
11581148

11591149
// CheckDaemonExportOK creates/removes git-daemon-export-ok for git-daemon...
1160-
func (repo *Repository) CheckDaemonExportOK(ctx context.Context) error {
1150+
func CheckDaemonExportOK(ctx context.Context, repo *Repository) error {
11611151
e := db.GetEngine(ctx)
11621152
if err := repo.getOwner(e); err != nil {
11631153
return err
@@ -1337,7 +1327,7 @@ func updateRepository(e db.Engine, repo *Repository, visibilityChanged bool) (er
13371327
}
13381328

13391329
// Create/Remove git-daemon-export-ok for git-daemon...
1340-
if err := repo.CheckDaemonExportOK(db.WithEngine(db.DefaultContext, e)); err != nil {
1330+
if err := CheckDaemonExportOK(db.WithEngine(db.DefaultContext, e), repo); err != nil {
13411331
return err
13421332
}
13431333

@@ -1972,7 +1962,7 @@ func CheckRepoStats(ctx context.Context) error {
19721962
}
19731963

19741964
// SetArchiveRepoState sets if a repo is archived
1975-
func (repo *Repository) SetArchiveRepoState(isArchived bool) (err error) {
1965+
func SetArchiveRepoState(repo *Repository, isArchived bool) (err error) {
19761966
repo.IsArchived = isArchived
19771967
_, err = db.GetEngine(db.DefaultContext).Where("id = ?", repo.ID).Cols("is_archived").NoAutoTime().Update(repo)
19781968
return

models/repo_branch.go

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)