Skip to content

Commit

Permalink
Merge pull request #77 from Restream/gh-76
Browse files Browse the repository at this point in the history
Add Namespace.execSql, Namespace.updateSql
  • Loading branch information
evgeniycheban authored Nov 11, 2021
2 parents 2a3a3b2 + c639b91 commit 042b3b0
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/main/java/ru/rt/restream/reindexer/Namespace.java
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,19 @@ public interface Namespace<T> {
*/
String getMeta(String key);

/**
* Executes the given SQL query and returns a {@link CloseableIterator}.
*
* @param query the SQL query to execute
* @return the {@link CloseableIterator} to use
*/
CloseableIterator<T> execSql(String query);

/**
* Executes the given SQL update query.
*
* @param query the SQL update query to execute
*/
void updateSql(String query);

}
10 changes: 10 additions & 0 deletions src/main/java/ru/rt/restream/reindexer/ReindexerNamespace.java
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,16 @@ public String getMeta(String key) {
return reindexer.getBinding().getMeta(name, key);
}

@Override
public CloseableIterator<T> execSql(String query) {
return reindexer.execSql(query, itemClass);
}

@Override
public void updateSql(String query) {
reindexer.updateSql(query);
}

/**
* Reindexer namespace builder.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2497,6 +2497,75 @@ public void testUpdateSqlForList() {
}
}

@Test
public void testNamespaceExecSqlForOne() {
Namespace<TestItem> ns = db.openNamespace("items", NamespaceOptions.defaultOptions(), TestItem.class);
TestItem testItem = new TestItem();
testItem.setId(123);
testItem.setName("TestName");
testItem.setNonIndex("testNonIndex");
ns.insert(testItem);
CloseableIterator<TestItem> iterator = ns.execSql("SELECT * FROM items WHERE id = 123");
TestItem result = iterator.next();
assertThat(result.getId(), is(testItem.getId()));
assertThat(result.getName(), is(testItem.getName()));
assertThat(result.getNonIndex(), is(testItem.getNonIndex()));
assertThat(iterator.hasNext(), is(false));
}

@Test
public void testNamespaceExecSqlForList() {
Namespace<TestItem> ns = db.openNamespace("items", NamespaceOptions.defaultOptions(), TestItem.class);
Set<TestItem> expectedItems = new HashSet<>();
for (int i = 0; i < 100; i++) {
TestItem testItem = new TestItem();
testItem.setId(i);
testItem.setName("TestName" + i);
testItem.setValue(i + "Value");
ns.upsert(testItem);
expectedItems.add(testItem);
}
CloseableIterator<TestItem> iterator = ns.execSql("SELECT * FROM items");
while (iterator.hasNext()) {
TestItem responseItem = iterator.next();
assertThat(expectedItems.remove(responseItem), is(true));
}
assertThat(expectedItems.size(), is(0));
}

@Test
public void testNamespaceUpdateSqlForOne() {
Namespace<TestItem> ns = db.openNamespace("items", NamespaceOptions.defaultOptions(), TestItem.class);
TestItem testItem = new TestItem();
testItem.setId(123);
testItem.setName("TestName");
testItem.setNonIndex("testNonIndex");
ns.insert(testItem);
ns.updateSql("UPDATE items SET name = 'upd' WHERE id = 123");
TestItem result = ns.query()
.where("id", EQ, 123)
.getOne();
assertThat(result.getName(), is("upd"));
}

@Test
public void testNamespaceUpdateSqlForList() {
Namespace<TestItem> ns = db.openNamespace("items", NamespaceOptions.defaultOptions(), TestItem.class);
for (int i = 0; i < 100; i++) {
TestItem testItem = new TestItem();
testItem.setId(i);
testItem.setName("TestName" + i);
testItem.setValue(i + "Value");
ns.upsert(testItem);
}
ns.updateSql("UPDATE items SET name = 'upd'");
List<TestItem> result = ns.query().toList();
assertThat(result.size(), is(100));
for (TestItem resultItem : result) {
assertThat(resultItem.getName(), is("upd"));
}
}

@Test
public void testQueryExecuteJson() {
String namespaceName = "items";
Expand Down

0 comments on commit 042b3b0

Please sign in to comment.