release create only if not exists
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user