From 262b861fbdba7a23d4831c88acaebc970b56b020 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Wed, 28 Jan 2026 00:14:08 +0100 Subject: [PATCH] release create only if not exists --- domain/repository.release.go | 13 +++++++++++++ domain/service.software_updater_tic80.go | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/domain/repository.release.go b/domain/repository.release.go index 617b7e6..a958d1c 100644 --- a/domain/repository.release.go +++ b/domain/repository.release.go @@ -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 diff --git a/domain/service.software_updater_tic80.go b/domain/service.software_updater_tic80.go index ac80e2c..63d92d1 100644 --- a/domain/service.software_updater_tic80.go +++ b/domain/service.software_updater_tic80.go @@ -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