Search in sources :

Example 6 with Tuple3

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"));
}
Also used : WidgetRow(com.cadenzauk.siesta.model.WidgetRow) Tuple3(com.cadenzauk.core.tuple.Tuple3) TestDatabase.testDatabase(com.cadenzauk.siesta.model.TestDatabase.testDatabase) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

Tuple3 (com.cadenzauk.core.tuple.Tuple3)6 Test (org.junit.jupiter.api.Test)6 TestDatabase.testDatabase (com.cadenzauk.siesta.model.TestDatabase.testDatabase)5 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)5 SalespersonRow (com.cadenzauk.siesta.model.SalespersonRow)3 WidgetRow (com.cadenzauk.siesta.model.WidgetRow)2 Database (com.cadenzauk.siesta.Database)1 IntegrationTest (com.cadenzauk.siesta.IntegrationTest)1 ZonedDateTime (java.time.ZonedDateTime)1