package apps;
import java.util.List;
import java.util.Optional;
import javax.inject.Inject;
import org.jooby.mvc.Body;
import org.jooby.mvc.Consumes;
import org.jooby.mvc.GET;
import org.jooby.mvc.POST;
import org.jooby.mvc.PUT;
import org.jooby.mvc.Path;
import org.jooby.mvc.Produces;
import apps.model.Pet;
/**
* Everything about your Pets.
*/
@Path("/api/pets")
@Consumes("json")
@Produces("json")
public class Pets {
private DB db;
@Inject
public Pets(final DB db) {
this.db = db;
}
/**
* List pets ordered by name.
*
* @param start Start offset, useful for paging. Default is <code>0</code>.
* @param max Max page size, useful for paging. Default is <code>200</code>.
* @return Pets ordered by name.
*/
@GET
public List<Pet> list(final Optional<Integer> start, final Optional<Integer> max) {
List<Pet> pets = db.findAll(Pet.class, start.orElse(0), max.orElse(200));
return pets;
}
/**
* Find pet by ID.
*
* @param id Pet ID.
* @return Returns a single pet
*/
@Path("/:id")
@GET
public Pet get(final int id) {
Pet pet = db.find(Pet.class, id);
return pet;
}
/**
* Add a new pet to the store.
*
* @param pet Pet object that needs to be added to the store.
* @return Returns a saved pet.
*/
@POST
public Pet post(@Body final Pet pet) {
db.save(pet);
return pet;
}
/**
* Update an existing pet.
*
* @param body Pet object that needs to be updated.
* @return Returns a saved pet.
*/
@PUT
public Pet put(@Body final Pet pet) {
db.save(pet);
return pet;
}
/**
* Deletes a pet by ID.
*
* @param id Pet ID.
*/
public void delete(final int id) {
db.delete(Pet.class, id);
}
}