Skip to content

Commit

Permalink
refactor common code
Browse files Browse the repository at this point in the history
  • Loading branch information
MarkWolters committed May 8, 2024
1 parent f7ea27a commit 8fb7b80
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@
package io.nosqlbench.adapter.dataapi.opdispensers;

import com.datastax.astra.client.Database;
import com.datastax.astra.client.model.DeleteOneOptions;
import com.datastax.astra.client.model.Filter;
import com.datastax.astra.client.model.Filters;
import com.datastax.astra.client.model.Sorts;
import com.datastax.astra.client.model.*;
import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter;
import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp;
import io.nosqlbench.adapter.dataapi.ops.DataApiDeleteOneOp;
Expand All @@ -45,17 +42,8 @@ private LongFunction<DataApiDeleteOneOp> createOpFunction(ParsedOp op) {
return (l) -> {
Database db = spaceFunction.apply(l).getDatabase();
Filter filter = getFilterFromOp(op, l);
DeleteOneOptions options = new DeleteOneOptions();
Optional<LongFunction<Map>> sortFunction = op.getAsOptionalFunction("sort", Map.class);
if (sortFunction.isPresent()) {
Map<String,Object> sortFields = sortFunction.get().apply(l);
String sortOrder = sortFields.get("type").toString();
String sortField = sortFields.get("field").toString();
switch(sortOrder) {
case "asc" -> options = options.sort(Sorts.ascending(sortField));
case "desc" -> options = options.sort(Sorts.descending(sortField));
}
}
DeleteOneOptions options = getDeleteOneOptions(op, l);

return new DataApiDeleteOneOp(
db,
db.getCollection(targetFunction.apply(l)),
Expand All @@ -65,6 +53,15 @@ private LongFunction<DataApiDeleteOneOp> createOpFunction(ParsedOp op) {
};
}

private DeleteOneOptions getDeleteOneOptions(ParsedOp op, long l) {
DeleteOneOptions options = new DeleteOneOptions();
Sort sort = getSortFromOp(op, l);
if (sort != null) {
options = options.sort(sort);
}
return options;
}

@Override
public DataApiBaseOp getOp(long value) {
return opFunction.apply(value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,15 @@

import com.datastax.astra.client.Database;
import com.datastax.astra.client.model.Filter;
import com.datastax.astra.client.model.Filters;
import com.datastax.astra.client.model.FindOneAndDeleteOptions;
import com.datastax.astra.client.model.Sorts;
import com.datastax.astra.client.model.Sort;
import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter;
import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp;
import io.nosqlbench.adapter.dataapi.ops.DataApiFindOneAndDeleteOp;
import io.nosqlbench.adapters.api.templating.ParsedOp;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.Map;
import java.util.Optional;
import java.util.function.LongFunction;

public class DataApiFindOneAndDeleteOpDispenser extends DataApiOpDispenser {
Expand All @@ -45,17 +42,8 @@ private LongFunction<DataApiFindOneAndDeleteOp> createOpFunction(ParsedOp op) {
return (l) -> {
Database db = spaceFunction.apply(l).getDatabase();
Filter filter = getFilterFromOp(op, l);
FindOneAndDeleteOptions options = new FindOneAndDeleteOptions();
Optional<LongFunction<Map>> sortFunction = op.getAsOptionalFunction("sort", Map.class);
if (sortFunction.isPresent()) {
Map<String,Object> sortFields = sortFunction.get().apply(l);
String sortOrder = sortFields.get("type").toString();
String sortField = sortFields.get("field").toString();
switch(sortOrder) {
case "asc" -> options = options.sort(Sorts.ascending(sortField));
case "desc" -> options = options.sort(Sorts.descending(sortField));
}
}
FindOneAndDeleteOptions options = getFindOneAndDeleteOptions(op, l);

return new DataApiFindOneAndDeleteOp(
db,
db.getCollection(targetFunction.apply(l)),
Expand All @@ -65,6 +53,15 @@ private LongFunction<DataApiFindOneAndDeleteOp> createOpFunction(ParsedOp op) {
};
}

private FindOneAndDeleteOptions getFindOneAndDeleteOptions(ParsedOp op, long l) {
FindOneAndDeleteOptions options = new FindOneAndDeleteOptions();
Sort sort = getSortFromOp(op, l);
if (sort != null) {
options = options.sort(sort);
}
return options;
}

@Override
public DataApiBaseOp getOp(long value) {
return opFunction.apply(value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,14 @@
import com.datastax.astra.client.Database;
import com.datastax.astra.client.model.Filter;
import com.datastax.astra.client.model.FindOneOptions;
import com.datastax.astra.client.model.Sorts;
import com.datastax.astra.client.model.Sort;
import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter;
import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp;
import io.nosqlbench.adapter.dataapi.ops.DataApiFindOneOp;
import io.nosqlbench.adapters.api.templating.ParsedOp;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.Map;
import java.util.Optional;
import java.util.function.LongFunction;

public class DataApiFindOneOpDispenser extends DataApiOpDispenser {
Expand All @@ -43,17 +41,7 @@ private LongFunction<DataApiFindOneOp> createOpFunction(ParsedOp op) {
return (l) -> {
Database db = spaceFunction.apply(l).getDatabase();
Filter filter = getFilterFromOp(op, l);
FindOneOptions options = new FindOneOptions();
Optional<LongFunction<Map>> sortFunction = op.getAsOptionalFunction("sort", Map.class);
if (sortFunction.isPresent()) {
Map<String,Object> sortFields = sortFunction.get().apply(l);
String sortOrder = sortFields.get("type").toString();
String sortField = sortFields.get("field").toString();
switch(sortOrder) {
case "asc" -> options = options.sort(Sorts.ascending(sortField));
case "desc" -> options = options.sort(Sorts.descending(sortField));
}
}
FindOneOptions options = getFindOneOptions(op, l);
return new DataApiFindOneOp(
db,
db.getCollection(targetFunction.apply(l)),
Expand All @@ -63,6 +51,15 @@ private LongFunction<DataApiFindOneOp> createOpFunction(ParsedOp op) {
};
}

private FindOneOptions getFindOneOptions(ParsedOp op, long l) {
FindOneOptions options = new FindOneOptions();
Sort sort = getSortFromOp(op, l);
if (sort != null) {
options = options.sort(sort);
}
return options;
}

@Override
public DataApiBaseOp getOp(long value) {
return opFunction.apply(value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,14 @@
import com.datastax.astra.client.Database;
import com.datastax.astra.client.model.Filter;
import com.datastax.astra.client.model.FindOptions;
import com.datastax.astra.client.model.Sorts;
import com.datastax.astra.client.model.Sort;
import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter;
import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp;
import io.nosqlbench.adapter.dataapi.ops.DataApiFindOp;
import io.nosqlbench.adapters.api.templating.ParsedOp;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.Map;
import java.util.Optional;
import java.util.function.LongFunction;

public class DataApiFindOpDispenser extends DataApiOpDispenser {
Expand All @@ -43,17 +41,7 @@ private LongFunction<DataApiFindOp> createOpFunction(ParsedOp op) {
return (l) -> {
Database db = spaceFunction.apply(l).getDatabase();
Filter filter = getFilterFromOp(op, l);
FindOptions options = new FindOptions();
Optional<LongFunction<Map>> sortFunction = op.getAsOptionalFunction("sort", Map.class);
if (sortFunction.isPresent()) {
Map<String,Object> sortFields = sortFunction.get().apply(l);
String sortOrder = sortFields.get("type").toString();
String sortField = sortFields.get("field").toString();
switch(sortOrder) {
case "asc" -> options = options.sort(Sorts.ascending(sortField));
case "desc" -> options = options.sort(Sorts.descending(sortField));
}
}
FindOptions options = getFindOptions(op, l);
return new DataApiFindOp(
db,
db.getCollection(targetFunction.apply(l)),
Expand All @@ -63,6 +51,15 @@ private LongFunction<DataApiFindOp> createOpFunction(ParsedOp op) {
};
}

private FindOptions getFindOptions(ParsedOp op, long l) {
FindOptions options = new FindOptions();
Sort sort = getSortFromOp(op, l);
if (sort != null) {
options = options.sort(sort);
}
return options;
}

@Override
public DataApiBaseOp getOp(long value) {
return opFunction.apply(value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

import com.datastax.astra.client.model.Filter;
import com.datastax.astra.client.model.Filters;
import com.datastax.astra.client.model.Sort;
import com.datastax.astra.client.model.Sorts;
import io.nosqlbench.adapter.dataapi.DataApiSpace;
import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp;
import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser;
Expand All @@ -41,6 +43,21 @@ protected DataApiOpDispenser(DriverAdapter<? extends DataApiBaseOp, DataApiSpace
this.spaceFunction = adapter.getSpaceFunc(op);
}

protected Sort getSortFromOp(ParsedOp op, long l) {
Sort sort = null;
Optional<LongFunction<Map>> sortFunction = op.getAsOptionalFunction("sort", Map.class);
if (sortFunction.isPresent()) {
Map<String,Object> sortFields = sortFunction.get().apply(l);
String sortOrder = sortFields.get("type").toString();
String sortField = sortFields.get("field").toString();
switch(sortOrder) {
case "asc" -> sort = Sorts.ascending(sortField);
case "desc" -> sort = Sorts.descending(sortField);
}
}
return sort;
}

protected Filter getFilterFromOp(ParsedOp op, long l) {
Filter filter = null;
Optional<LongFunction<Map>> filterFunction = op.getAsOptionalFunction("filters", Map.class);
Expand Down

0 comments on commit 8fb7b80

Please sign in to comment.