HEAVY: finish music service migration, tidy up services, more tests

This commit is contained in:
ari melody 2026-08-01 00:29:31 +01:00
parent 9e311df462
commit 90a671982c
Signed by: ari
GPG key ID: CF99829C92678188
47 changed files with 2698 additions and 902 deletions

81
service/music/track.go Normal file
View file

@ -0,0 +1,81 @@
package music
import (
"arimelody-web/model"
"arimelody-web/errors"
)
func (s *MusicService) GetAllTracks() ([]*model.Track, error) {
return s.repo.GetAllTracks()
}
func (s *MusicService) GetTrackCount() (int, error) {
return s.repo.GetTrackCount()
}
func (s *MusicService) GetTrackByID(id string) (*model.Track, error) {
track, err := s.repo.GetTrackByID(id)
if err != nil { return nil, err }
if track == nil { return nil, errors.NewNotExistError("Track does not exist") }
return track, nil
}
func (s *MusicService) GetOrphanTracks() ([]*model.Track, error) {
return s.repo.GetOrphanTracks()
}
func (s *MusicService) GetTracksNotOnRelease(releaseID string) ([]*model.Track, error) {
return s.repo.GetTracksNotOnRelease(releaseID)
}
func (s *MusicService) GetTrackReleases(trackID string) ([]*model.Release, error) {
return s.repo.GetTrackReleases(trackID)
}
func (s *MusicService) GetTrackFullReleases(trackID string) ([]*model.Release, error) {
releases, err := s.GetTrackReleases(trackID)
if err != nil { return nil, err }
for _, release := range releases {
if err := s.fillRelease(release); err != nil { return nil, err }
}
return releases, nil
}
func (s *MusicService) CreateTrack(title string, description string, lyrics string, previewURL string) (string, error) {
if len(title) == 0 { return "", errors.NewValidationError("Track title cannot be empty") }
id, err := s.repo.CreateTrack(title, description, lyrics, previewURL)
if err != nil { return "", err }
s.log.Printf("Created track '%s' (%s)", title, id)
return id, nil
}
func (s *MusicService) UpdateTrack(track *model.Track) error {
if len(track.Title) == 0 { return errors.NewValidationError("Track title cannot be empty") }
if err := s.repo.UpdateTrack(track); err != nil { return err }
s.log.Printf("Updated track '%s' (%s)", track.Title, track.ID)
return nil
}
func (s *MusicService) UpdateTrackTitle(id string, title string) error {
if len(title) == 0 { return errors.NewValidationError("Track title cannot be empty") }
if err := s.repo.UpdateTrackTitle(id, title); err != nil { return err }
s.log.Printf("Updated track %s title to '%s'", id, title)
return nil
}
func (s *MusicService) UpdateTrackDescription(id string, description string) error {
if err := s.repo.UpdateTrackDescription(id, description); err != nil { return err }
s.log.Printf("Updated track %s description to '%s'", id, description)
return nil
}
func (s *MusicService) UpdateTrackLyrics(id string, lyrics string) error {
if err := s.repo.UpdateTrackLyrics(id, lyrics); err != nil { return err }
s.log.Printf("Updated track %s lyrics to '%s'", id, lyrics)
return nil
}
func (s *MusicService) UpdateTrackPreviewURL(id string, previewURL string) error {
if err := s.repo.UpdateTrackPreviewURL(id, previewURL); err != nil { return err }
s.log.Printf("Updated track %s preview URL to '%s'", id, previewURL)
return nil
}
func (s *MusicService) DeleteTrack(id string) error {
deletedID, err := s.repo.DeleteTrack(id)
if err != nil { return err }
if deletedID == "" { return errors.NewNotExistError("Track does not exist") }
s.log.Printf("Deleted track %s", id)
return nil
}