package sklep.rest;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import sklep.model.Product;

// Adotacja @Stateless powoduje, że ta klasa staje się klasą EJB i można w niej używać dodatkowych adnotacji,
// np. @PersistenceContext
@Stateless
@Path("/products")
@Produces({"application/xml", "application/json"})
@Consumes({"application/xml", "application/json"})
public class RProducts {
	@PersistenceContext(unitName="sklep_pu")
	private EntityManager em;
	
	@POST
	@Produces("text/plain")
	public int save(Product product) {
		em.persist(product);
		return product.getProductId();
	}
	
	@GET
	public List<Product> readAll() {
		TypedQuery<Product> query = em.createNamedQuery("Product.findAll", Product.class);
		List<Product> products = query.getResultList();
		return products;
	}

	@GET
	@Path("/{id}")
	public Product readOne(@PathParam("id") int productId) {
		return em.find(Product.class, productId);
	}
	
}
