use of com.cadenzauk.core.tuple.Tuple2 in project siesta by cadenzauk.
the class DatabaseIntegrationTestH2 method selectSubquery.
@Test
void selectSubquery() {
Database database = testDatabase(dataSource);
long manufacturerId = newId();
ManufacturerRow manufacturer = ManufacturerRow.newBuilder().manufacturerId(manufacturerId).name(Optional.of("Doc Brown")).build();
WidgetRow[] widgets = IntStream.range(1, 4).mapToObj(i -> WidgetRow.newBuilder().widgetId(newId()).name("Flux capacitor " + i).manufacturerId(manufacturerId).build()).toArray(WidgetRow[]::new);
database.insert(manufacturer);
database.insert(widgets);
Tuple2<Long, Integer> result1 = database.from(ManufacturerRow.class).select(ManufacturerRow::manufacturerId).comma(database.from(WidgetRow.class).select(count()).where(WidgetRow::manufacturerId).isEqualTo(ManufacturerRow::manufacturerId)).where(ManufacturerRow::name).isEqualTo("Doc Brown").single();
Tuple2<Long, Integer> result2 = database.from(ManufacturerRow.class).select(ManufacturerRow::manufacturerId).comma(database.from(WidgetRow.class).select(count()).where(WidgetRow::manufacturerId).isEqualTo(ManufacturerRow::manufacturerId), "widget_count").where(ManufacturerRow::name).isEqualTo("Doc Brown").single();
Tuple2<Long, Integer> result3 = database.from(ManufacturerRow.class).select(ManufacturerRow::manufacturerId).comma(database.from(WidgetRow.class).select(count(), "wcount").where(WidgetRow::manufacturerId).isEqualTo(ManufacturerRow::manufacturerId), "wcount").where(ManufacturerRow::name).isEqualTo("Doc Brown").single();
assertThat(result1.item1(), is(manufacturerId));
assertThat(result1.item2(), is(3));
assertThat(result2.item1(), is(manufacturerId));
assertThat(result2.item2(), is(3));
assertThat(result3.item1(), is(manufacturerId));
assertThat(result3.item2(), is(3));
}
use of com.cadenzauk.core.tuple.Tuple2 in project siesta by cadenzauk.
the class DatabaseIntegrationTest method coalesceFunc.
@Test
void coalesceFunc() {
Database database = testDatabase(dataSource, dialect);
long manufacturer1 = newId();
long manufacturer2 = newId();
ManufacturerRow twoParts = ManufacturerRow.newBuilder().manufacturerId(manufacturer1).name(Optional.of("Two Parts")).build();
ManufacturerRow noParts = ManufacturerRow.newBuilder().manufacturerId(manufacturer2).name(Optional.of("No Parts")).build();
WidgetRow aWidget1 = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturer1).name("Name 1").build();
WidgetRow aWidget2 = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturer1).name("Name 2").description(Optional.of("Description 2")).build();
database.insert(noParts);
database.insert(twoParts);
database.insert(aWidget1);
database.insert(aWidget2);
List<Tuple2<String, String>> result = database.from(ManufacturerRow.class, "m").leftJoin(WidgetRow.class, "w").on(WidgetRow::manufacturerId).isEqualTo(ManufacturerRow::manufacturerId).select(ManufacturerRow::name).comma(coalesce(WidgetRow::description).orElse(WidgetRow::name).orElse("-- no parts --")).where(ManufacturerRow::manufacturerId).isIn(manufacturer1, manufacturer2).orderBy(ManufacturerRow::manufacturerId).then(WidgetRow::name).list();
assertThat(result, hasSize(3));
assertThat(result.get(0).item1(), is("Two Parts"));
assertThat(result.get(0).item2(), is("Name 1"));
assertThat(result.get(1).item1(), is("Two Parts"));
assertThat(result.get(1).item2(), is("Description 2"));
assertThat(result.get(2).item1(), is("No Parts"));
assertThat(result.get(2).item2(), is("-- no parts --"));
}
Aggregations