initial commit

This commit is contained in:
2025-12-07 11:32:45 +01:00
commit c3daed67ac
35 changed files with 1315 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
package domain
import (
"errors"
)
var (
ErrSoftwareNotFound = errors.New("software not found")
ErrNoReleasesFound = errors.New("no releases found for software")
ErrReleaseNotFound = errors.New("release not found for software and version")
)
type DownloadService interface {
GetLatestRelease(softwareName string) (*Release, error)
GetSpecificRelease(softwareName string, version string) (*Release, error)
}
type downloadService struct {
softwareRepository SoftwareRepository
releaseRepository ReleaseRepository
}
func (s *downloadService) GetLatestRelease(softwareName string) (*Release, error) {
software, err := s.softwareRepository.GetByName(softwareName)
if err != nil {
return nil, ErrSoftwareNotFound
}
release, err := s.releaseRepository.FindLatestBySoftwareID(software.ID)
if err != nil {
return nil, ErrNoReleasesFound
}
return release, nil
}
func (s *downloadService) GetSpecificRelease(softwareName string, version string) (*Release, error) {
software, err := s.softwareRepository.GetByName(softwareName)
if err != nil {
return nil, ErrSoftwareNotFound
}
release, err := s.releaseRepository.FindBySoftwareIDAndVersion(software.ID, version)
if err != nil {
return nil, ErrReleaseNotFound
}
return release, nil
}