- artist, err := env.C.GetArtist(spotify.ID(artistId))
- if err != nil {
- log.Printf("Failed to retrieve artist %s: %s", artistId, err.Error())
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
-
- env.Db.Mu.Lock()
- defer env.Db.Mu.Unlock()
- env.Db.Db.Exec("INSERT INTO ARTIST (ID, NAME) VALUES (?, ?)", artist.ID, artist.Name)
-
- for _, genre := range artist.Genres {
- result, err := env.Db.Db.Exec("REPLACE INTO GENRE (NAME) VALUES (?)", genre)
- if err != nil {
- log.Printf("Failed to insert genre %s: %s", genre, err.Error())
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
-
- genreId, err := result.LastInsertId()
- if err != nil {
- log.Print("Failed to retrieve last insert id: ", err.Error())
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
-
- env.Db.Db.Exec("INSERT INTO ARTIST_GENRE_XREF (ARTIST_ID, GENRE_ID) VALUES (?, ?)", artist.ID, genreId)
- }
- w.WriteHeader(http.StatusCreated)
- }