public static DB<Unit> createStuffTable() { //this specific table has auto-generated ID return new EffectOp("CREATE TABLE STUFF (ID INTEGER PRIMARY KEY IDENTITY, DESCRIPTION NVARCHAR(200) NOT NULL)"); }
@BeforeClass public static void setupSuite() { fj.control.db.DB<Unit> createSchema = sequence( arrayList(new EffectOp("CREATE TABLE MySqlTest_IDS (ID INTEGER PRIMARY KEY IDENTITY, DUMMY CHAR)"), new EffectOp("CREATE TABLE MySqlTest_DATA (ID INTEGER PRIMARY KEY, DESCRIPTION VARCHAR(100))"), new EffectOp("CREATE TABLE MySqlTest_EXPIRING_STUFF (ID INTEGER PRIMARY KEY IDENTITY," + " DESCRIPTION VARCHAR(100), STAMP BIGINT)"), new EffectOp("CREATE TABLE MySqlTest_FOO (X VARCHAR (100), Y VARCHAR(100))") )).map(ignore -> Unit.unit()); DB.transact(createSchema); }
@AfterClass public static void teardownSuite() { DB.transact(new EffectOp("DROP TABLE BAR")); } }
@After public void teardown() { dbi.submit(new EffectOp("DROP TABLE EMPLOYEES")); } }
@Before public void setup() throws SQLException { SyncDbInterpreter dbi = new SyncDbInterpreter( () -> DriverManager.getConnection("jdbc:hsqldb:mem:test", "sa", "") ); dbi.submit(new EffectOp("CREATE TABLE DUMMY (ID INTEGER PRIMARY KEY, X NVARCHAR(200))")); }
@After public void tearDown() { SyncDbInterpreter dbi = new SyncDbInterpreter( () -> DriverManager.getConnection("jdbc:hsqldb:mem:test", "sa", "") ); dbi.submit(new EffectOp("DROP TABLE EMPLOYEES")); }
@BeforeClass public static void setupSuite() { DB.transact(new EffectOp("CREATE TABLE BAR (BAZ VARCHAR(100))")).f(); }
@AfterClass public static void teardownSuite() throws SQLException { sync.transact(new EffectOp("DELETE FROM BAR")); ds.close(0); ConcurrentUtil.shutdownAndAwaitTermination(executor, 5, TimeUnit.SECONDS); }
@Test public void nextValFromSequence() { DB.submit(new EffectOp("CREATE SEQUENCE MY_SEQ START WITH 1 MINVALUE 1")); final Option<Long> firstValFromSeqOp = DB.submit(unique(new SelectOp.FjList<>("call NEXT VALUE FOR MY_SEQ", NO_BINDER, rs -> rs.getLong(1)))); assertThat(firstValFromSeqOp.some(), is(1L)); final Option<Long> secondsValFromSeqOp = DB.submit(unique(new SelectOp.FjList<>("call NEXT VALUE FOR MY_SEQ", NO_BINDER, rs -> rs.getLong(1)))); assertThat(secondsValFromSeqOp.some(), is(2L)); }
@Test public void groupBy() { SyncDbInterpreter dbi = new SyncDbInterpreter( () -> DriverManager.getConnection("jdbc:hsqldb:mem:test", "sa", "") ); dbi.submit(new EffectOp("CREATE TABLE EMPLOYEES (ID INTEGER PRIMARY KEY, NAME VARCHAR(300), DEPARTMENT_ID INTEGER)")); dbi.submit( EmployeeDb.insert(asList( new Employee(1, "Ivan", 1), new Employee(2, "Peter", 1), new Employee(3, "Stephan", 3), new Employee(4, "George", 3), new Employee(5, "Juergen", 2) ))); DB<List<Employee>> selectEmployees = EmployeeDb.selectByIds(asList(2, 1, 4, 3)); DB<Map<Integer, List<Employee>>> selectEmployeesById = selectEmployees.map(employees -> employees.stream().collect(Collectors.groupingBy(employee -> employee.departmentId)) ); Map<Integer, List<Employee>> expected = new HashMap<>(); expected.put(1, asList(new Employee(1, "Ivan", 1), new Employee(2, "Peter", 1))); expected.put(3, asList(new Employee(3, "Stephan", 3), new Employee(4, "George", 3))); assertThat( dbi.submit(selectEmployeesById), is(expected) ); }
@BeforeClass public static void setupSuite() { executor = Executors.newCachedThreadPool(); ds = new JDBCPool(); ds.setURL("jdbc:hsqldb:mem:JdbcUtilsTest"); ds.setUser("sa"); ds.setPassword(""); dbi = new AsyncDbInterpreter(ds, executor); sync = new SyncDbInterpreter(lift(ds)); sync.transact(new EffectOp("CREATE TABLE BAR (BAZ VARCHAR(100))")); }
dbi.submit(new EffectOp("CREATE TABLE EMPLOYEES (ID INTEGER PRIMARY KEY, NAME VARCHAR(300), DEPARTMENT_ID INTEGER)"));