package goscrobble

import (
	"database/sql"
	"log"
)

type Genre struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`
}

func getGenreByUUID(uuid string) Genre {
	var genre Genre
	err := db.QueryRow(
		"SELECT BIN_TO_UUID(`uuid`, true), `name` FROM `artists` WHERE `uuid` = UUID_TO_BIN(?,true)",
		uuid).Scan(&genre.UUID, &genre.Name)

	if err != nil {
		if err != sql.ErrNoRows {
			log.Printf("Error fetching artists: %+v", err)
		}
	}

	return genre
}

func getGenreByName(name string) Genre {
	var genre Genre
	err := db.QueryRow(
		"SELECT BIN_TO_UUID(`uuid`, true), `name` FROM `artists` WHERE `name` = ?",
		name).Scan(&genre.UUID, &genre.Name)

	if err != nil {
		if err != sql.ErrNoRows {
			log.Printf("Error fetching artists: %+v", err)
		}
	}

	return genre
}

func (genre *Genre) updateGenreName(name string, value string) error {
	_, err := db.Exec("UPDATE `genres` SET `name` = ? WHERE uuid = UUID_TO_BIN(?, true)", name, genre.UUID)

	return err
}
