From cd8745390d14cf39ae48834122d23229b768fa64 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Sun, 1 Mar 2026 20:45:04 +0100 Subject: [PATCH] fix --- domain/model.software.go | 2 +- domain/service.software.go | 11 +++++------ http/controller.api.software.go | 32 ++++++++++++++++---------------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/domain/model.software.go b/domain/model.software.go index a423bac..ae16645 100644 --- a/domain/model.software.go +++ b/domain/model.software.go @@ -11,5 +11,5 @@ type Software struct { Site string `gorm:"size:255" json:"site"` License string `gorm:"size:128" json:"license"` Platform string `gorm:"size:128" json:"platform"` - Releases []Release `json:"releases"` + Releases []Release `json:"-"` } diff --git a/domain/service.software.go b/domain/service.software.go index 08a1b22..bb44985 100644 --- a/domain/service.software.go +++ b/domain/service.software.go @@ -67,7 +67,6 @@ func (s *SoftwareService) List() ([]SoftwareListDTO, error) { func (s *SoftwareService) GetByName(name string) (*Software, error) { return s.softeare_repository.GetByName(name) - } func (s *SoftwareService) GetForShowByName(name string) (*SoftwareShowData, error) { @@ -89,10 +88,10 @@ func (s *SoftwareService) GetForShowByName(name string) (*SoftwareShowData, erro latest_release = &releases[0] } - var web_payable_release *Release - for _, release := range releases { - if release.HTMLFolderPath != "" { - web_payable_release = &release + var web_playable_release *Release + for i := range releases { + if releases[i].HTMLFolderPath != "" { + web_playable_release = &releases[i] // fix: slice elem címe, nem a loop változóé break } } @@ -101,7 +100,7 @@ func (s *SoftwareService) GetForShowByName(name string) (*SoftwareShowData, erro Software: software, Releases: releases, LatestRelease: latest_release, - WebPlayableRelease: web_payable_release, + WebPlayableRelease: web_playable_release, }, nil } diff --git a/http/controller.api.software.go b/http/controller.api.software.go index 8d34cad..13259e3 100644 --- a/http/controller.api.software.go +++ b/http/controller.api.software.go @@ -16,30 +16,30 @@ func NewAPISoftwareController(software_service domain.SoftwareServiceInterface) return &APISoftwareController{softwareService: software_service} } +func replaceReleasePaths(release *domain.Release) { + release.CartridgePath = strings.ReplaceAll(release.CartridgePath, "/softwares/", "/file/") + release.SourcePath = strings.ReplaceAll(release.SourcePath, "/softwares/", "/file/") + release.HTMLFolderPath = strings.ReplaceAll(release.HTMLFolderPath, "/softwares/", "/file/") + release.DocsFolderPath = strings.ReplaceAll(release.DocsFolderPath, "/softwares/", "/file/") +} + func (c *APISoftwareController) Index(w http.ResponseWriter, r *http.Request) { softwares, _ := c.softwareService.DetailedList() - for _, softwareShowData := range softwares.Softwares { + for idx := range softwares.Softwares { + softwareShowData := &softwares.Softwares[idx] + for i := range softwareShowData.Releases { - release := &softwareShowData.Releases[i] - release.CartridgePath = strings.ReplaceAll(release.CartridgePath, "/softwares/", "/file/") - release.SourcePath = strings.ReplaceAll(release.SourcePath, "/softwares/", "/file/") - release.HTMLFolderPath = strings.ReplaceAll(release.HTMLFolderPath, "/softwares/", "/file/") - release.DocsFolderPath = strings.ReplaceAll(release.DocsFolderPath, "/softwares/", "/file/") + replaceReleasePaths(&softwareShowData.Releases[i]) } + + // LatestRelease és WebPlayableRelease a Releases slice elemeire mutat, + // ezért ezeket külön is frissíteni kell, mivel értékmásolat kerülhet bele if softwareShowData.LatestRelease != nil { - release := softwareShowData.LatestRelease - release.CartridgePath = strings.ReplaceAll(release.CartridgePath, "/softwares/", "/file/") - release.SourcePath = strings.ReplaceAll(release.SourcePath, "/softwares/", "/file/") - release.HTMLFolderPath = strings.ReplaceAll(release.HTMLFolderPath, "/softwares/", "/file/") - release.DocsFolderPath = strings.ReplaceAll(release.DocsFolderPath, "/softwares/", "/file/") + replaceReleasePaths(softwareShowData.LatestRelease) } if softwareShowData.WebPlayableRelease != nil { - release := softwareShowData.WebPlayableRelease - release.CartridgePath = strings.ReplaceAll(release.CartridgePath, "/softwares/", "/file/") - release.SourcePath = strings.ReplaceAll(release.SourcePath, "/softwares/", "/file/") - release.HTMLFolderPath = strings.ReplaceAll(release.HTMLFolderPath, "/softwares/", "/file/") - release.DocsFolderPath = strings.ReplaceAll(release.DocsFolderPath, "/softwares/", "/file/") + replaceReleasePaths(softwareShowData.WebPlayableRelease) } }