Skip to content

Commit b568c07

Browse files
authored
add additional query to filter for repo name (#2084)
* add additional query to filter for repo name * fix review
1 parent f569cc7 commit b568c07

File tree

3 files changed

+39
-5
lines changed

3 files changed

+39
-5
lines changed

backend/controllers/github.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
699699

700700
// remove any dangling locks which are no longer in the list of impacted projects
701701
if *diggerCommand == orchestrator_scheduler.DiggerCommandUnlock {
702-
err := models.DB.DeleteAllLocksAcquiredByPR(prNumber, organisationId)
702+
err := models.DB.DeleteAllLocksAcquiredByPR(prNumber, repoFullName, organisationId)
703703
if err != nil {
704704
slog.Error("Failed to delete locks",
705705
"prNumber", prNumber,
@@ -1595,7 +1595,7 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
15951595

15961596
// remove any dangling locks which are no longer in the list of impacted projects
15971597
if *diggerCommand == orchestrator_scheduler.DiggerCommandUnlock {
1598-
err := models.DB.DeleteAllLocksAcquiredByPR(issueNumber, orgId)
1598+
err := models.DB.DeleteAllLocksAcquiredByPR(issueNumber, repoFullName, orgId)
15991599
if err != nil {
16001600
slog.Error("Failed to delete locks",
16011601
"prNumber", issueNumber,

backend/models/storage.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1703,6 +1703,15 @@ func (db *Database) RefreshProjectsFromRepo(orgId string, config configuration.D
17031703
return nil
17041704
}
17051705

1706+
func (db *Database) GetLocksForOrg(orgId uint) ([]DiggerLock, error) {
1707+
locks := make([]DiggerLock, 0)
1708+
err := db.GormDB.Where("organisation_id=?", orgId).Find(&locks).Error
1709+
if err != nil {
1710+
return nil, err
1711+
}
1712+
return locks, nil
1713+
}
1714+
17061715
func (db *Database) CreateDiggerLock(resource string, lockId int, orgId uint) (*DiggerLock, error) {
17071716
lock := &DiggerLock{
17081717
Resource: resource,
@@ -1726,9 +1735,10 @@ func (db *Database) CreateDiggerLock(resource string, lockId int, orgId uint) (*
17261735
return lock, nil
17271736
}
17281737

1729-
func (db *Database) DeleteAllLocksAcquiredByPR(prNumber int, orgId uint) error {
1738+
func (db *Database) DeleteAllLocksAcquiredByPR(prNumber int, repoFullName string, orgId uint) error {
17301739
l := DiggerLock{}
1731-
err := db.GormDB.Where("lock_id=? AND organisation_id=?", prNumber, orgId).Delete(&l).Error
1740+
err := db.GormDB.Where("lock_id=? AND organisation_id=? AND resource LIKE ?", prNumber, orgId, repoFullName+"%").Delete(&l).Error
1741+
17321742
if err != nil {
17331743
return fmt.Errorf("could not delete all locks: %v", err)
17341744
}

backend/models/storage_test.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func setupSuite(tb testing.TB) (func(tb testing.TB), *Database, *Organisation) {
3535
// migrate tables
3636
err = gdb.AutoMigrate(&Policy{}, &Organisation{}, &Repo{}, &Project{}, &Token{},
3737
&User{}, &ProjectRun{}, &GithubAppInstallation{}, &VCSConnection{}, &GithubAppInstallationLink{},
38-
&GithubDiggerJobLink{}, &DiggerJob{}, &DiggerJobParentLink{})
38+
&GithubDiggerJobLink{}, &DiggerJob{}, &DiggerJobParentLink{}, &DiggerLock{})
3939
if err != nil {
4040
panic(err)
4141
}
@@ -157,3 +157,27 @@ func TestGetDiggerJobsForBatchPreloadsSummary(t *testing.T) {
157157
assert.Equal(t, jobssss[0].DiggerJobSummary.ResourcesUpdated, resourcesUpdated)
158158
assert.Equal(t, jobssss[0].DiggerJobSummary.ResourcesDeleted, resourcesDeleted)
159159
}
160+
161+
func TestDiggerLockFunctionalities(t *testing.T) {
162+
teardownSuite, _, _ := setupSuite(t)
163+
defer teardownSuite(t)
164+
165+
DB.CreateDiggerLock("org/repo1#dev", 1, 1)
166+
DB.CreateDiggerLock("org/repo1#staging", 1, 1)
167+
DB.CreateDiggerLock("org/repo1#prod", 1, 1)
168+
169+
DB.CreateDiggerLock("org/repo2#dev", 1, 1)
170+
DB.CreateDiggerLock("org/repo2#prod", 1, 1)
171+
172+
existingLocks, err := DB.GetLocksForOrg(1)
173+
assert.NoError(t, err)
174+
assert.Equal(t, 5, len(existingLocks))
175+
176+
DB.DeleteAllLocksAcquiredByPR(1, "org/repo1", 1)
177+
178+
existingLocksAfterDeletion, err := DB.GetLocksForOrg(1)
179+
assert.NoError(t, err)
180+
assert.Equal(t, 2, len(existingLocksAfterDeletion))
181+
assert.Equal(t, "org/repo2#dev", existingLocksAfterDeletion[0].Resource)
182+
assert.Equal(t, "org/repo2#prod", existingLocksAfterDeletion[1].Resource)
183+
}

0 commit comments

Comments
 (0)