添加接口
All checks were successful
Go CI / test-and-build (push) Successful in 11s

This commit is contained in:
2026-04-07 16:38:59 +08:00
parent 02efb9972a
commit 9aec254f23
4 changed files with 67 additions and 4 deletions

View File

@@ -195,6 +195,21 @@ func (c *LibraryController) GetArtists(w http.ResponseWriter, r *http.Request) {
jsonResponse(w, artists, http.StatusOK)
}
func (c *LibraryController) GetArtist(w http.ResponseWriter, r *http.Request) {
idParam := chi.URLParam(r, "id")
id, err := strconv.Atoi(idParam)
if err != nil {
jsonError(w, err.Error(), http.StatusBadRequest)
return
}
artist, err := c.service.GetArtist(id)
if err != nil {
jsonError(w, err.Error(), http.StatusInternalServerError)
return
}
jsonResponse(w, artist, http.StatusOK)
}
func (c *LibraryController) GetAlbums(w http.ResponseWriter, r *http.Request) {
albums, err := c.service.GetAlbums()
if err != nil {
@@ -203,3 +218,18 @@ func (c *LibraryController) GetAlbums(w http.ResponseWriter, r *http.Request) {
}
jsonResponse(w, albums, http.StatusOK)
}
func (c *LibraryController) GetAlbum(w http.ResponseWriter, r *http.Request) {
idParam := chi.URLParam(r, "id")
id, err := strconv.Atoi(idParam)
if err != nil {
jsonError(w, err.Error(), http.StatusBadRequest)
return
}
album, err := c.service.GetAlbum(id)
if err != nil {
jsonError(w, err.Error(), http.StatusInternalServerError)
return
}
jsonResponse(w, album, http.StatusOK)
}

View File

@@ -275,6 +275,17 @@ func (r *LibraryRepository) GetArtists() ([]model.Artist, error) {
return artists, nil
}
func (r *LibraryRepository) GetArtist(id int) (model.Artist, error) {
row := r.db.QueryRow("SELECT id, name FROM artists WHERE id = ?", id)
var artist model.Artist
if err := row.Scan(&artist.ID, &artist.Name); err != nil {
return model.Artist{}, err
}
return artist, nil
}
func (r *LibraryRepository) GetAlbums() ([]model.Album, error) {
rows, err := r.db.Query("SELECT id, title, artist_id FROM albums")
if err != nil {
@@ -292,3 +303,13 @@ func (r *LibraryRepository) GetAlbums() ([]model.Album, error) {
}
return albums, nil
}
func (r *LibraryRepository) GetAlbum(id int) (model.Album, error) {
row := r.db.QueryRow("SELECT id, title, artist_id FROM albums WHERE id = ?", id)
var album model.Album
if err := row.Scan(&album.ID, &album.Title, &album.ArtistID); err != nil {
return model.Album{}, err
}
return album, nil
}

View File

@@ -71,10 +71,18 @@ func (s *LibraryService) GetArtists() ([]model.Artist, error) {
return s.repo.GetArtists()
}
func (s *LibraryService) GetArtist(id int) (model.Artist, error) {
return s.repo.GetArtist(id)
}
func (s *LibraryService) GetAlbums() ([]model.Album, error) {
return s.repo.GetAlbums()
}
func (s *LibraryService) GetAlbum(id int) (model.Album, error) {
return s.repo.GetAlbum(id)
}
func (s *LibraryService) Scan(id int) (*ScanReport, error) {
lib, err := s.repo.GetByID(id)
if err != nil {