Commit 38bc240f by Bright Sukumpanumet

Add watchlist feature

parent 1842595e
......@@ -46,6 +46,7 @@ public class Item
@JsonIgnore
private Set<ShoppingCart> shopping_carts = new HashSet<>(); //must have the same name as the table
public Item()
{
}
......@@ -151,7 +152,7 @@ public class Item
@JsonIgnore
public Set<ShoppingCart> getShopping_carts()
{
return shopping_carts;
return this.shopping_carts;
}
public Item addShoppingCart(ShoppingCart shoppingCart)
......
package edu.uchicago.mpcs.topics.auction;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
public class Watchlist
{
@Id
private Long watchlistId;
private String keyword;
private Double maxPrice;
public Watchlist()
{}
public Watchlist(Long watchlistId, String keyword, Double maxPrice)
{
this.watchlistId = watchlistId;
this.keyword = keyword;
this.maxPrice = maxPrice;
}
public Long getWatchlistId()
{
return watchlistId;
}
public void setWatchlistId(Long watchlistId)
{
this.watchlistId = watchlistId;
}
public String getKeyword()
{
return keyword;
}
public void setKeyword(String keyword)
{
this.keyword = keyword;
}
public Double getMaxPrice()
{
return maxPrice;
}
public void setMaxPrice(Double maxPrice)
{
this.maxPrice = maxPrice;
}
}
package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.ShoppingCart;
import edu.uchicago.mpcs.topics.auction.Watchlist;
import edu.uchicago.mpcs.topics.db.CheckoutRepository;
import edu.uchicago.mpcs.topics.db.SearchRepository;
import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import edu.uchicago.mpcs.topics.db.WatchlistRepository;
import edu.uchicago.mpcs.topics.service.CheckoutService;
import edu.uchicago.mpcs.topics.service.ShoppingCartService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Created by Bright on 2018-11-26.
*/
@RestController
@RequestMapping("/watchlist")
public class WatchlistController
{
private WatchlistRepository watchlistRepository;
private SearchRepository searchRepository;
public WatchlistController(WatchlistRepository watchlistRepository, SearchRepository searchRepository)
{
this.watchlistRepository = watchlistRepository;
this.searchRepository = searchRepository;
}
@GetMapping("/{id}")
public List<Item> getWatchlist(@PathVariable Long id)
{
Watchlist watchlist = watchlistRepository.findById(id).orElseThrow(null);
String keyword = watchlist.getKeyword();
Double maxPrice = watchlist.getMaxPrice();
return searchRepository.findAllByDescriptionContainsAndCurrentPriceLessThan(keyword, maxPrice);
}
@PostMapping
public Watchlist createWatchlist(@RequestBody Watchlist watchlist)
{
return watchlistRepository.save(watchlist);
}
}
......@@ -11,5 +11,5 @@ import java.util.List;
public interface SearchRepository extends CrudRepository<Item, String>
{
List<Item> findAllByDescriptionContains(String keyword);
List<Item> findAllByDescriptionContainsAndCurrentPriceLessThan(String description, Double currentPrice);
}
package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Watchlist;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
/**
* Created by Bright on 2018-11-26.
*/
public interface WatchlistRepository extends CrudRepository<Watchlist, Long>
{
}
package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.ItemCategory;
//import edu.uchicago.mpcs.topics.auction.Listing;
import org.hibernate.query.Query;
import java.util.List;
public interface SearchEngine {
// List<Listing> search(Query query);
// List<Listing> search(ItemCategory itemCategory);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment