У меня есть таблица take_coffee, и я хочу отфильтровать данные по дате. Мне нужно получить данные за последнюю неделю, месяц и год. Данные относятся к принятому кофе, поэтому у них есть идентификатор, дата и тег. Как мне сделать фильтрацию? Мне нужно что-то вроде запроса с WHERE date> (сегодня-7), сегодня-30 или сегодня-365. Спасибо. Вот мой код, но он работает некорректно. Сущность
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "take_coffee")
public class Coffee {
@Id
@GeneratedValue
private int id;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date;
private String tag;
}
Репозиторий
public interface CoffeeRepository extends JpaRepository<Coffee, Integer> {
List<Coffee> findAllByDateBetween(Date today, Date days);
}
Служба
@Service
public class CoffeeService {
@Autowired
private CoffeeRepository repository;
public Coffee takeCoffee(Coffee coffee){
return repository.save(coffee);
}
public List<Coffee> getAllCoffee(){
return repository.findAll();
}
public Coffee getCoffeeById(int id){
return repository.findById(id).orElse(null);
}
public String deleteCoffeeById(int id){
repository.deleteById(id);
return "deleted coffee " + id;
}
public Coffee updateCoffee(Coffee coffee){
Coffee existingcoffee = repository.findById(coffee.getId()).orElse(null);
existingcoffee.setDate(coffee.getDate());
existingcoffee.setTag(coffee.getTag());
return repository.save(existingcoffee);
}
public List<Coffee> findAllByDateBetween(int days){
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, -days);
Date beforeDays = calendar.getTime();
return repository.findAllByDateBetween(today, beforeDays);
}
}
Контроллер - причина перекрестного происхождения ReactApp
@CrossOrigin(origins = "http://localhost:3000")
@RestController
public class CoffeeController {
@Autowired
private CoffeeService service;
@PostMapping("/takeCoffee")
public Coffee takeCaffee (@RequestBody Coffee caffee){
return service.takeCoffee(caffee);
}
@GetMapping("/getCoffee")
public List<Coffee> getAllUsers(){
return service.getAllCoffee();
}
@GetMapping("/coffee/{id}")
public Coffee getCaffeeById(@PathVariable int id){
return service.getCoffeeById(id);
}
@GetMapping("/coffee/stats/{days}")
public List<Coffee> findAllByDateBetween(@PathVariable int days){
return service.findAllByDateBetween(days);
}
@PutMapping("/updateCoffee")
public Coffee updateCoffee (@RequestBody Coffee caffee){
return service.updateCoffee(caffee);
}
@DeleteMapping("/deleteCoffee/{id}")
public String deleteCoffeeById (@PathVariable int id){
return service.deleteCoffeeById(id);
}
}