Skip to content

Commit 455ec5f

Browse files
committed
update DeleteArtifact method to accept transaction parameter and adjust related mocks
Signed-off-by: rafi <refaei.shikho@hotmail.com>
1 parent 2e1294b commit 455ec5f

5 files changed

Lines changed: 29 additions & 27 deletions

File tree

database/repositories/artifact_repository.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,21 @@ func (r *artifactRepository) ReadArtifact(name string, assetVersionName string,
5454
return artifact, err
5555
}
5656

57-
func (r *artifactRepository) DeleteArtifact(assetID uuid.UUID, assetVersionName string, artifactName string) error {
58-
err := r.db.Where("artifact_name = ? AND asset_version_name = ? AND asset_id = ?", artifactName, assetVersionName, assetID).Delete(&models.Artifact{}).Error
57+
func (r *artifactRepository) DeleteArtifact(tx *gorm.DB, assetID uuid.UUID, assetVersionName string, artifactName string) error {
58+
59+
db := r.db
60+
if tx != nil {
61+
db = tx
62+
}
63+
64+
err := db.Where("artifact_name = ? AND asset_version_name = ? AND asset_id = ?", artifactName, assetVersionName, assetID).Delete(&models.Artifact{}).Error
5965
if err != nil {
6066
return err
6167
}
6268

6369
r.FireAndForget(func() {
6470
sql := CleanupOrphanedRecordsSQL
65-
err = r.db.Exec(sql).Error
71+
err = db.Exec(sql).Error
6672
if err != nil {
6773
slog.Error("Failed to clean up orphaned records after deleting artifact", "err", err)
6874
}

mocks/mock_ArtifactRepository.go

Lines changed: 18 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

services/artifact_service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (s *ArtifactService) DeleteArtifact(assetID uuid.UUID, assetVersionName str
8787
}
8888

8989
// Delete the artifact record itself
90-
err = s.artifactRepository.DeleteArtifact(assetID, assetVersionName, artifactName)
90+
err = s.artifactRepository.DeleteArtifact(tx, assetID, assetVersionName, artifactName)
9191
if err != nil {
9292
slog.Error("failed to delete artifact record", "assetID", assetID, "assetVersionName", assetVersionName, "artifactName", artifactName, "error", err)
9393
return err

shared/common_interfaces.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ type ArtifactRepository interface {
135135
utils.Repository[string, models.Artifact, DB]
136136
GetByAssetIDAndAssetVersionName(assetID uuid.UUID, assetVersionName string) ([]models.Artifact, error)
137137
ReadArtifact(name string, assetVersionName string, assetID uuid.UUID) (models.Artifact, error)
138-
DeleteArtifact(assetID uuid.UUID, assetVersionName string, artifactName string) error
138+
DeleteArtifact(tx DB, assetID uuid.UUID, assetVersionName string, artifactName string) error
139139
GetAllArtifactAffectedByDependencyVuln(tx DB, vulnID string) ([]models.Artifact, error)
140140
GetByAssetVersions(assetID uuid.UUID, assetVersionNames []string) ([]models.Artifact, error)
141141
}

tests/artifact_controller_test.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package tests
33
import (
44
"net/http/httptest"
55
"testing"
6-
"time"
76

87
"github.com/l3montree-dev/devguard/database/models"
98
"github.com/l3montree-dev/devguard/dtos"
@@ -124,9 +123,6 @@ func TestArtifactControllerDeleteArtifact(t *testing.T) {
124123
err := f.App.ArtifactController.DeleteArtifact(ctx)
125124
assert.NoError(t, err)
126125

127-
// Wait for Fire and Forget to complete
128-
time.Sleep(500 * time.Millisecond)
129-
130126
// Verify artifact was deleted
131127
var deletedArtifact models.Artifact
132128
err = f.DB.First(&deletedArtifact, "artifact_name = ? AND asset_id = ?", artifact1.ArtifactName, asset.ID).Error
@@ -271,9 +267,6 @@ func TestArtifactControllerDeleteArtifact(t *testing.T) {
271267
assert.NoError(t, err)
272268
assert.Equal(t, 200, rec.Code)
273269

274-
// Wait for async operations to complete
275-
time.Sleep(500 * time.Millisecond)
276-
277270
// Verify artifact was deleted
278271
var deletedArtifact models.Artifact
279272
err = f.DB.First(&deletedArtifact, "artifact_name = ? AND asset_id = ?", artifactSingle.ArtifactName, asset.ID).Error
@@ -348,9 +341,6 @@ func TestArtifactControllerDeleteArtifact(t *testing.T) {
348341
assert.NoError(t, err)
349342
assert.Equal(t, 200, rec.Code)
350343

351-
// Wait for async operations to complete
352-
time.Sleep(500 * time.Millisecond)
353-
354344
// Verify artifact1 was deleted
355345
var deletedArtifact models.Artifact
356346
err = f.DB.First(&deletedArtifact, "artifact_name = ? AND asset_id = ?", artifactMulti1.ArtifactName, asset.ID).Error

0 commit comments

Comments
 (0)