35 lines
1.0 KiB
Go
35 lines
1.0 KiB
Go
package domain
|
|
|
|
import "gorm.io/gorm"
|
|
|
|
type ReleaseRepository interface {
|
|
Create(release *Release) error
|
|
FindLatestBySoftwareID(softwareID uint) (*Release, error)
|
|
FindBySoftwareIDAndVersion(softwareID uint, version string) (*Release, error)
|
|
}
|
|
|
|
type releaseRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
// NewReleaseRepository creates a new instance of ReleaseRepository.
|
|
/* func NewReleaseRepository(db *gorm.DB) ReleaseRepository {
|
|
return &releaseRepository{db}
|
|
} */
|
|
|
|
func (r *releaseRepository) Create(release *Release) error {
|
|
return r.db.Create(release).Error
|
|
}
|
|
|
|
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
|
|
return &release, err
|
|
}
|
|
|
|
func (r *releaseRepository) FindBySoftwareIDAndVersion(softwareID uint, version string) (*Release, error) {
|
|
var release Release
|
|
err := r.db.Where("software_id = ? AND version = ?", softwareID, version).First(&release).Error
|
|
return &release, err
|
|
}
|