Skip to content

Instantly share code, notes, and snippets.

View GayanM's full-sized avatar

Gayan GayanM

View GitHub Profile
@GayanM
GayanM / ProductsCount.java
Created September 25, 2022 10:59
Obtain a data map with order id and order’s product count
@RequestMapping("/products-count")
public Map<Long, Integer> getOrdersWithProductCount() {
return orderRepo.findAll().stream().
collect(Collectors.toMap(o -> o.getId(), o -> o.getProducts().size()));
}
@GayanM
GayanM / GroupByCustomer.java
Created September 25, 2022 11:01
Produce a data map with order records grouped by customer
@RequestMapping("/group-by-customer")
public Map<Customer, List<Order>> getOrdersByCustomer () {
Map<com.mycompany.functional.programming.exercises.models.Customer,
List<com.mycompany.functional.programming.exercises.models.Order>> ordersByCustomer = orderRepo.
findAll().stream().collect(Collectors.groupingBy(com.mycompany.functional.programming.exercises.models.
Order::getCustomer));
Map<Customer, List<Order>> ordersByCustomerTransformed = new HashMap();
ordersByCustomer.forEach((k,v) -> {
Customer customer = new Customer(k.getId(), k.getName(), k.getTier());
List<Order> orders = v.stream().map(o -> new Order(o.getId(), o.getOrderDate(), o.getDeliveryDate(), o.getStatus())).
@GayanM
GayanM / ProductTotalSum.java
Created September 25, 2022 11:04
Produce a data map with order record and product total sum
@RequestMapping("/product-total-sum")
public Map<Order, Double> getProductTotalSumByOrder() {
return orderRepo.findAll().stream().collect(Collectors.toMap(o -> new Order(o.getId(), o.getOrderDate(),
o.getDeliveryDate(), o.getStatus()), o -> o.getProducts().stream().mapToDouble(p ->
p.getPrice()).sum()));
}
@GayanM
GayanM / ProductCategory.java
Created September 25, 2022 11:09
Obtain a data map with list of product name by category
@RequestMapping("/product-category")
Map<String, List<String>> getProductsByCategory(List<Product> productList) {
return productRepos.findAll().stream().collect(Collectors.groupingBy(com.mycompany.functional.programming.
exercises.models.Product::getCategory, Collectors.mapping(product -> product.getName(),
Collectors.toList())));
}
@GayanM
GayanM / MostExpensiveProduct.java
Created September 25, 2022 11:12
Get the most expensive product by category
@RequestMapping("/most-expensive")
Map<String, Optional<Product>> getMostExpensiveProductByCategory () {
Map<String, Optional<com.mycompany.functional.programming.exercises.models.Product>> mostExpensiveByCategory = productRepos.findAll().stream().collect(Collectors.groupingBy(
com.mycompany.functional.programming.exercises.models.Product::getCategory,
Collectors.maxBy(Comparator.comparing(com.mycompany.functional.programming.exercises.models.
Product::getPrice)
)
));
Map<String, Optional<Product>> ordersByCustomerTransformed = new HashMap();
mostExpensiveByCategory.entrySet().stream().forEach(e -> {
@GayanM
GayanM / kong.conf
Created October 4, 2022 06:15
Kong gateway configuration
database = postgres # Determines which of PostgreSQL or Cassandra
# this node will use as its datastore.
# Accepted values are `postgres`,
# `cassandra`, and `off`.
pg_host = 127.0.0.1 # Host of the Postgres server.
pg_port = 5432 # Port of the Postgres server.
pg_timeout = 5000 # Defines the timeout (in ms), for connecting,
# reading and writing.