mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
refactor common code
This commit is contained in:
parent
f7ea27ae5e
commit
8fb7b80c26
@ -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;
|
||||
@ -45,17 +42,8 @@ public class DataApiDeleteOneOpDispenser extends DataApiOpDispenser {
|
||||
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)),
|
||||
@ -65,6 +53,15 @@ public class DataApiDeleteOneOpDispenser extends DataApiOpDispenser {
|
||||
};
|
||||
}
|
||||
|
||||
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);
|
||||
|
@ -18,9 +18,8 @@ package io.nosqlbench.adapter.dataapi.opdispensers;
|
||||
|
||||
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;
|
||||
@ -28,8 +27,6 @@ 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 {
|
||||
@ -45,17 +42,8 @@ public class DataApiFindOneAndDeleteOpDispenser extends DataApiOpDispenser {
|
||||
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)),
|
||||
@ -65,6 +53,15 @@ public class DataApiFindOneAndDeleteOpDispenser extends DataApiOpDispenser {
|
||||
};
|
||||
}
|
||||
|
||||
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);
|
||||
|
@ -19,7 +19,7 @@ package io.nosqlbench.adapter.dataapi.opdispensers;
|
||||
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;
|
||||
@ -27,8 +27,6 @@ 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 {
|
||||
@ -43,17 +41,7 @@ public class DataApiFindOneOpDispenser extends DataApiOpDispenser {
|
||||
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)),
|
||||
@ -63,6 +51,15 @@ public class DataApiFindOneOpDispenser extends DataApiOpDispenser {
|
||||
};
|
||||
}
|
||||
|
||||
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);
|
||||
|
@ -19,7 +19,7 @@ package io.nosqlbench.adapter.dataapi.opdispensers;
|
||||
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;
|
||||
@ -27,8 +27,6 @@ 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 {
|
||||
@ -43,17 +41,7 @@ public class DataApiFindOpDispenser extends DataApiOpDispenser {
|
||||
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)),
|
||||
@ -63,6 +51,15 @@ public class DataApiFindOpDispenser extends DataApiOpDispenser {
|
||||
};
|
||||
}
|
||||
|
||||
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);
|
||||
|
@ -18,6 +18,8 @@ package io.nosqlbench.adapter.dataapi.opdispensers;
|
||||
|
||||
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;
|
||||
@ -41,6 +43,21 @@ public abstract class DataApiOpDispenser extends BaseOpDispenser<DataApiBaseOp,
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user