Skip to content

Commit

Permalink
adding example yamls
Browse files Browse the repository at this point in the history
  • Loading branch information
MarkWolters committed May 10, 2024
1 parent d9d728e commit 455a938
Show file tree
Hide file tree
Showing 12 changed files with 65 additions and 27 deletions.
Expand Up @@ -57,35 +57,42 @@ protected Sort getSortFromOp(ParsedOp op, long l) {

protected Filter getFilterFromOp(ParsedOp op, long l) {
Filter filter = null;
Optional<LongFunction<Map>> filterFunction = op.getAsOptionalFunction("filters", Map.class);
Optional<LongFunction<List>> filterFunction = op.getAsOptionalFunction("filters", List.class);
if (filterFunction.isPresent()) {
Map<String,Object> filters = filterFunction.get().apply(l);
List<Filter> filterList = new ArrayList<>();
String conjunction = "and";
for (Map.Entry<String, Object> entry : filters.entrySet()) {
if (entry.getKey().equalsIgnoreCase("filter")) {
Map<String,Object> filterFields = (Map<String, Object>) entry.getValue();
switch (filterFields.get("operation").toString()) {
case "lt" ->
filterList.add(Filters.lt(filters.get("field").toString(), (long) filters.get("value")));
case "gt" ->
filterList.add(Filters.gt(filters.get("field").toString(), (long) filters.get("value")));
case "eq" -> filterList.add(Filters.eq(filters.get("field").toString(), filters.get("value")));
default -> logger.error("Operation not supported");
List<Map<String,Object>> filters = filterFunction.get().apply(l);
List<Filter> andFilterList = new ArrayList<>();
List<Filter> orFilterList = new ArrayList<>();
for (Map<String,Object> filterFields : filters) {
switch ((String)filterFields.get("conjunction")) {
case "and" -> {
switch (filterFields.get("operator").toString()) {
case "lt" ->
andFilterList.add(Filters.lt(filterFields.get("field").toString(), (long) filterFields.get("value")));
case "gt" ->
andFilterList.add(Filters.gt(filterFields.get("field").toString(), (long) filterFields.get("value")));
case "eq" ->
andFilterList.add(Filters.eq(filterFields.get("field").toString(), filterFields.get("value")));
default -> logger.error(() -> "Operation " + filterFields.get("operator") + " not supported");
}
}
} else if (entry.getKey().equalsIgnoreCase("conjunction")) {
conjunction = (String) entry.getValue();
} else {
logger.error("Filter " + entry.getKey() + " not supported");
case "or" -> {
switch (filterFields.get("operator").toString()) {
case "lt" ->
orFilterList.add(Filters.lt(filterFields.get("field").toString(), (long) filterFields.get("value")));
case "gt" ->
orFilterList.add(Filters.gt(filterFields.get("field").toString(), (long) filterFields.get("value")));
case "eq" ->
orFilterList.add(Filters.eq(filterFields.get("field").toString(), filterFields.get("value")));
default -> logger.error(() -> "Operation " + filterFields.get("operator") + " not supported");
}
}
default -> logger.error(() -> "Conjunction " + filterFields.get("conjunction") + " not supported");
}
}
if (conjunction.equalsIgnoreCase("and")) {
filter = Filters.and(filterList);
} else if (conjunction.equalsIgnoreCase("or")) {
filter = Filters.or(filterList);
} else {
logger.error("Conjunction " + conjunction + " not supported");
}
if (!andFilterList.isEmpty())
filter = Filters.and(andFilterList.toArray(new Filter[0]));
if (!orFilterList.isEmpty())
filter = Filters.or(orFilterList.toArray(new Filter[0]));
}
return filter;
}
Expand All @@ -110,10 +117,10 @@ protected Update getUpdates(ParsedOp op, long l) {
update = Updates.min(updateFields.get("field").toString(), (double) updateFields.get("value"));
case "rename" ->
update = Updates.rename(updateFields.get("field").toString(), updateFields.get("value").toString());
default -> logger.error("Operation " + updateFields.get("operation") + " not supported");
default -> logger.error(() -> "Operation " + updateFields.get("operation") + " not supported");
}
} else {
logger.error("Filter " + entry.getKey() + " not supported");
logger.error(() -> "Filter " + entry.getKey() + " not supported");
}
}
}
Expand Down
@@ -0,0 +1,11 @@
scenarios:
default:
create_collection: run driver=dataapi tags==blocks:create_collection cycles=1

blocks:
create_collection:
ops:
op1:
create_collection: "collectionName"
dimensions: 128
similarity: "cosine"
@@ -0,0 +1,20 @@
scenarios:
default:
delete_many: run driver=dataapi tags==blocks:delete_many cycles=1

blocks:
delete_many:
ops:
op1:
delete_many: "collectionName"
filters:
- name: "filter1"
conjunction: "and"
operator: "lt"
field: "field1"
value: 10
- name: "filter2"
conjunction: "or"
operator: "eq"
field: "field2"
value: "value2"
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.

0 comments on commit 455a938

Please sign in to comment.