release create only if not exists

This commit is contained in:
2026-01-28 00:14:08 +01:00
parent 0dbcffbfe5
commit 262b861fbd
2 changed files with 14 additions and 1 deletions
+13
View File
@@ -4,6 +4,7 @@ import "gorm.io/gorm"
type ReleaseRepositoryInterface interface {
Create(release *Release) error
CreateIfNotExist(release *Release) error
FindLatestBySoftwareID(softwareID uint) (*Release, error)
FindBySoftwareIDAndVersion(softwareID uint, version string) (*Release, error)
}
@@ -16,6 +17,18 @@ func (r *ReleaseRepository) Create(release *Release) error {
return r.db.Create(release).Error
}
func (r *ReleaseRepository) CreateIfNotExist(release *Release) error {
var existing Release
err := r.db.Where("software_id = ? AND version = ?", release.SoftwareID, release.Version).First(&existing).Error
if err != nil {
if err == gorm.ErrRecordNotFound {
return r.db.Create(release).Error
}
return err
}
return nil
}
func (r *ReleaseRepository) FindLatestBySoftwareID(softwareID uint) (*Release, error) {
var release Release
err := r.db.Where("software_id = ?", softwareID).Order("created_at desc").First(&release).Error
+1 -1
View File
@@ -62,7 +62,7 @@ func (s *SoftwareUpdaterTIC80Service) Update(name, version string) error {
HTMLFolderPath: htmlFolderPath,
}
s.releaseRepository.Create(&release)
s.releaseRepository.CreateIfNotExist(&release)
fmt.Printf("TIC80 Updater: Successfully processed Lua cartridge: %s\n", name)
return nil