use of com.cadenzauk.core.tuple.Tuple3 in project siesta by cadenzauk.
the class DatabaseIntegrationTest method groupBy.
@Test
void groupBy() {
Database database = testDatabase(dataSource, dialect);
long manufacturer1 = newId();
long manufacturer2 = newId();
WidgetRow aWidget1 = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturer1).name("Grouper 1").build();
WidgetRow aWidget2 = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturer1).name("Grouper 2").build();
WidgetRow aWidget3 = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturer2).name("Grouper 3").build();
database.insert(aWidget1, aWidget2, aWidget3);
List<Tuple3<Long, String, String>> result = database.from(WidgetRow.class).select(WidgetRow::manufacturerId).comma(max(WidgetRow::name)).comma(min(WidgetRow::name)).where(WidgetRow::widgetId).isIn(aWidget1.widgetId(), aWidget2.widgetId(), aWidget3.widgetId()).groupBy(WidgetRow::manufacturerId).orderBy(WidgetRow::manufacturerId, DESC).then(max(WidgetRow::name)).then(min(WidgetRow::name)).list();
assertThat(result.get(0).item1(), is(manufacturer2));
assertThat(result.get(0).item2(), is("Grouper 3"));
assertThat(result.get(0).item3(), is("Grouper 3"));
assertThat(result.get(1).item1(), is(manufacturer1));
assertThat(result.get(1).item2(), is("Grouper 2"));
assertThat(result.get(1).item3(), is("Grouper 1"));
}
Aggregations