package me.moodcat.database.controllers;
import static me.moodcat.database.entities.QArtist.artist;
import java.util.List;
import javax.persistence.EntityManager;
import me.moodcat.database.entities.Artist;
import com.google.inject.Inject;
import com.google.inject.persist.Transactional;
/**
* Used to retrieve artists from the database.
*/
public class ArtistDAO extends AbstractDAO<Artist> {
@Inject
public ArtistDAO(final EntityManager entityManager) {
super(entityManager);
}
/**
* Get all the artists stored in the database.
*
* @return A list of all artists.
*/
@Transactional
public List<Artist> listArtists() {
return this.query().from(artist)
.list(artist);
}
/**
* Get an artist by name.
*
* @param name
* The (case-ignored) name of the artist.
* @return The artist, if found.
*/
@Transactional
public Artist findByName(final String name) {
return this.query().from(artist)
.where(artist.name.equalsIgnoreCase(name))
.singleResult(artist);
}
/**
* Get an artist by id.
*
* @param id
* The id of the artist.
* @return The artist, if found.
*/
@Transactional
public Artist findById(final int id) {
return ensureExists(this.query().from(artist)
.where(artist.id.eq(id))
.singleResult(artist));
}
}