package download type Service struct { repo *Repository } func NewService(repo *Repository) *Service { return &Service{repo: repo} } func (s *Service) GetInfo() (*Info, error) { return s.repo.GetLatest() } func (s *Service) Upsert(url, version, fileName, fileSize string) (*Info, error) { info, err := s.repo.GetLatest() if err != nil { info = &Info{} } info.URL = url info.Version = version info.FileName = fileName info.FileSize = fileSize return info, s.repo.Save(info) }