use of com.cadenzauk.core.tuple.Tuple2 in project siesta by cadenzauk.
the class DatabaseIntegrationTest method olapWithoutPartitionOrOrder.
@Test
void olapWithoutPartitionOrOrder() {
assumeFalse(dialect.requiresOrderByInRowNumber(), dialect.getClass().getSimpleName() + " does not support row_number() without ORDER BY.");
Database database = testDatabase(dataSource, dialect);
Tuple2<Long, Long> inserted = insertSalespeople(database, 5);
List<Tuple2<Long, Integer>> result = database.from(SalespersonRow.class).select(SalespersonRow::salespersonId).comma(Olap.rowNumber()).where(SalespersonRow::salespersonId).isBetween(inserted.item1()).and(inserted.item2()).orderBy(SalespersonRow::salespersonId).list();
assertThat(result, hasSize(5));
assertThat(result.get(0), is(Tuple.of(inserted.item1(), 1)));
assertThat(result.get(4), is(Tuple.of(inserted.item2(), 5)));
}
use of com.cadenzauk.core.tuple.Tuple2 in project siesta by cadenzauk.
the class DatabaseIntegrationTest method leftJoinOfMissingIsNull.
@Test
void leftJoinOfMissingIsNull() {
Database database = testDatabase(dataSource, dialect);
long manufacturer1 = newId();
long manufacturer2 = newId();
ManufacturerRow twoParts = ManufacturerRow.newBuilder().manufacturerId(manufacturer1).name(Optional.of("Has a Part")).build();
ManufacturerRow noParts = ManufacturerRow.newBuilder().manufacturerId(manufacturer2).name(Optional.of("Has No Parts")).build();
WidgetRow aWidget1 = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturer1).name("Name 1").build();
database.insert(noParts, twoParts);
database.insert(aWidget1);
List<Tuple2<ManufacturerRow, WidgetRow>> result = database.from(ManufacturerRow.class, "m").leftJoin(WidgetRow.class, "w").on(WidgetRow::manufacturerId).isEqualTo(ManufacturerRow::manufacturerId).where(ManufacturerRow::manufacturerId).isIn(manufacturer1, manufacturer2).orderBy(ManufacturerRow::manufacturerId).list();
assertThat(result, hasSize(2));
assertThat(result.get(0).item1().name(), is(Optional.of("Has a Part")));
assertThat(result.get(0).item2().name(), is("Name 1"));
assertThat(result.get(1).item1().name(), is(Optional.of("Has No Parts")));
assertThat(result.get(1).item2(), nullValue());
}
use of com.cadenzauk.core.tuple.Tuple2 in project siesta by cadenzauk.
the class DatabaseIntegrationTest method selectRow.
@Test
void selectRow() {
Database database = testDatabase(dataSource, dialect);
long manufacturerId = newId();
ManufacturerRow aManufacturer = ManufacturerRow.newBuilder().manufacturerId(manufacturerId).name(Optional.of("Acclaimed Widgets")).build();
WidgetRow aWidget1 = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturerId).name("Acclaimed 1").build();
WidgetRow aWidget2 = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturerId).name("Acclaimed 2").build();
database.insert(aManufacturer);
database.insert(aWidget1, aWidget2);
List<WidgetRow> acclaimedWidgets1 = database.from(ManufacturerRow.class, "m").join(WidgetRow.class, "w").on(WidgetRow::manufacturerId).isEqualTo(ManufacturerRow::manufacturerId).select(WidgetRow.class).where(ManufacturerRow::name).isEqualTo("Acclaimed Widgets").orderBy(WidgetRow::name, DESC).list();
List<Tuple2<String, WidgetRow>> acclaimedWidgets2 = database.from(ManufacturerRow.class, "m").join(WidgetRow.class, "w").on(WidgetRow::manufacturerId).isEqualTo(ManufacturerRow::manufacturerId).select(WidgetRow::name, "name").comma(WidgetRow.class).where(ManufacturerRow::name).isEqualTo("Acclaimed Widgets").orderBy(WidgetRow::name, Order.ASC).list();
assertThat(acclaimedWidgets1, hasSize(2));
assertThat(acclaimedWidgets1.get(0).name(), is("Acclaimed 2"));
assertThat(acclaimedWidgets1.get(1).name(), is("Acclaimed 1"));
assertThat(acclaimedWidgets2, hasSize(2));
assertThat(acclaimedWidgets2.get(0).item1(), is("Acclaimed 1"));
assertThat(acclaimedWidgets2.get(1).item1(), is("Acclaimed 2"));
assertThat(acclaimedWidgets2.get(0).item2().name(), is("Acclaimed 1"));
assertThat(acclaimedWidgets2.get(1).item2().name(), is("Acclaimed 2"));
}
use of com.cadenzauk.core.tuple.Tuple2 in project siesta by cadenzauk.
the class DatabaseIntegrationTest method selectFromDatabaseTwoTables.
@Test
void selectFromDatabaseTwoTables() {
Database database = testDatabase(dataSource, dialect);
long manufacturerId = newId();
ManufacturerRow aManufacturer = ManufacturerRow.newBuilder().manufacturerId(manufacturerId).name(Optional.of("Makers")).build();
WidgetRow aWidget = WidgetRow.newBuilder().widgetId(newId()).manufacturerId(manufacturerId).name("Dodacky").description(Optional.of("Thingamibob")).build();
database.insert(aManufacturer);
database.insert(aWidget);
Alias<WidgetRow> w = database.table(WidgetRow.class).as("w");
Alias<ManufacturerRow> m = database.table(ManufacturerRow.class).as("m");
Optional<WidgetRow> theSame = database.from(w).join(m).on(m, ManufacturerRow::manufacturerId).isEqualTo(w, WidgetRow::manufacturerId).where(w, WidgetRow::name).isEqualTo("Dodacky").and(w, WidgetRow::widgetId).isEqualTo(aWidget.widgetId()).optional().map(Tuple2::item1);
assertThat(theSame, is(Optional.of(aWidget)));
}
use of com.cadenzauk.core.tuple.Tuple2 in project siesta by cadenzauk.
the class SiestaExample method selectIntoObject.
@Test
void selectIntoObject() {
Database database = Database.newBuilder().defaultSchema("SIESTA").defaultSqlExecutor(JdbcSqlExecutor.of(dataSource)).build();
database.insert(new Manufacturer(2006L, "Spacely Space Sprockets, Inc"), new Manufacturer(2007L, "Cogswell's Cogs"), new Manufacturer(2008L, "Orbit City Gears"));
database.insert(new Widget(1006L, "Cog", 2006L, Optional.of("Spacely Sprocket")), new Widget(1007L, "Cog", 2007L, Optional.of("Cogswell Cog")), new Widget(1008L, "Cog", 2007L, Optional.of("Cogswell Sprocket")));
List<Tuple2<String, Integer>> partCountsBySupplier = database.from(Manufacturer.class, "m").leftJoin(Widget.class, "w").on(Widget::manufacturerId).isEqualTo(Manufacturer::manufacturerId).select(Manufacturer::name).comma(countDistinct(Widget::widgetId)).where(Manufacturer::manufacturerId).isIn(2006L, 2007L, 2008L).groupBy(Manufacturer::manufacturerId).orderBy(Manufacturer::manufacturerId).list();
List<ManufacturerSummary> manufacturerSummaries = database.from(Manufacturer.class, "m").leftJoin(Widget.class, "w").on(Widget::manufacturerId).isEqualTo(Manufacturer::manufacturerId).selectInto(ManufacturerSummary.class).with(Manufacturer::name).as(ManufacturerSummary::name).with(countDistinct(Widget::widgetId)).as(ManufacturerSummary::numberOfPartsSupplied).where(Manufacturer::manufacturerId).isIn(2006L, 2007L, 2008L).groupBy(Manufacturer::manufacturerId).orderBy(Manufacturer::manufacturerId).list();
List<ManufacturerSummary> nonSuppliers = database.from(Manufacturer.class, "m").leftJoin(Widget.class, "w").on(Widget::manufacturerId).isEqualTo(Manufacturer::manufacturerId).selectInto(ManufacturerSummary.class).with(Manufacturer::name).as(ManufacturerSummary::name).with(countDistinct(Widget::widgetId)).as(ManufacturerSummary::numberOfPartsSupplied).where(Manufacturer::manufacturerId).isIn(2006L, 2007L, 2008L).groupBy(Manufacturer::manufacturerId).having(countDistinct(Widget::widgetId)).isEqualTo(0).orderBy(Manufacturer::manufacturerId).list();
try (CompositeAutoCloseable autoCloseable = new CompositeAutoCloseable()) {
database.from(Manufacturer.class).select(Manufacturer::name).where(Manufacturer::manufacturerId).isEqualTo(1L).stream(autoCloseable).forEach(System.out::println);
}
assertThat(partCountsBySupplier, hasSize(3));
assertThat(partCountsBySupplier.get(0).item1(), is("Spacely Space Sprockets, Inc"));
assertThat(partCountsBySupplier.get(1).item1(), is("Cogswell's Cogs"));
assertThat(partCountsBySupplier.get(2).item1(), is("Orbit City Gears"));
assertThat(partCountsBySupplier.get(0).item2(), is(1));
assertThat(partCountsBySupplier.get(1).item2(), is(2));
assertThat(partCountsBySupplier.get(2).item2(), is(0));
assertThat(manufacturerSummaries, hasSize(3));
assertThat(manufacturerSummaries.get(0).name(), is("Spacely Space Sprockets, Inc"));
assertThat(manufacturerSummaries.get(1).name(), is("Cogswell's Cogs"));
assertThat(manufacturerSummaries.get(2).name(), is("Orbit City Gears"));
assertThat(manufacturerSummaries.get(0).numberOfPartsSupplied(), is(1));
assertThat(manufacturerSummaries.get(1).numberOfPartsSupplied(), is(2));
assertThat(manufacturerSummaries.get(2).numberOfPartsSupplied(), is(0));
assertThat(nonSuppliers, hasSize(1));
assertThat(nonSuppliers.get(0).name(), is("Orbit City Gears"));
}
Aggregations