@Entity
public class Artista {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private TipoArtista tipo;
@OneToMany(mappedBy = "artista", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Música> músicas;
// getters e setters
}
enum TipoArtista {
SOLO, DUPLA, BANDA
}
@Entity
public class Música {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String título;
private String gênero;
@ManyToOne
@JoinColumn(name = "artista_id")
private Artista artista;
// getters e setters
}
public interface ArtistaRepository extends JpaRepository<Artista, Long> {
}
public interface MúsicaRepository extends JpaRepository<Música, Long> {
}
@Service
public class ArtistaService {
@Autowired
private ArtistaRepository artistaRepository;
@Autowired
private ChatGPTClient chatGPTClient;
public void cadastrarArtista(Artista artista) {
// verificar se o artista já está cadastrado
Artista artistaExistente = artistaRepository.findByNome(artista.getNome());
if (artistaExistente != null) {
// atualizar informações do artista existente
} else {
// cadastrar novo artista
artistaRepository.save(artista);
}
}
public List<Música> buscarMúsicasPorArtista(Long artistaId) {
// buscar músicas associadas ao artista
return artistaRepository.findById(artistaId).get().getMúsicas();
}
public String buscarInformaçõesSobreArtista(Long artistaId) {
// buscar informações sobre o artista usando a API do ChatGPT
return chatGPTClient.getArtistaInformações(artistaId);
}
}
@Service
public class MúsicaService {
@Autowired
private MúsicaRepository músicaRepository;
public void cadastrarMúsica(Música música) {
// verificar se o artista associado à música já está cadastrado
Artista artista = música.getArtista();
if (artistaRepository.findByNome(artista.getNome()) == null) {
// cadastrar novo artista
artistaRepository.save(artista);
}
// cadastrar música
músicaRepository.save(música);
}
}
public class Main {
@Autowired
private ArtistaService artistaService;
@Autowired
private MúsicaService músicaService;
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
public void run(String... args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Opções:");
System.out.println("1. Cadastrar artista");
System.out.println("2. Cadastrar música");
System.out.println("3. Buscar músicas por artista");
System.out.println("4. Buscar informações sobre artista");
System.out.println("5. Sair");
int opção = scanner.nextInt();
switch (opção) {
case 1:
cadastrarArtista();
break;
case 2:
cadastrarMúsica();
break;
case 3:
buscarMúsicasPorArtista();
break;
case 4:
buscarInformaçõesSobreArtista();
break;
case 5:
System.exit(0);
break;
default:
System.out.println("Opção inválida");
}
}
}