diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiDriverAdapter.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiDriverAdapter.java index 0a4f7f34a..8c927784e 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiDriverAdapter.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiDriverAdapter.java @@ -29,13 +29,13 @@ import io.nosqlbench.nb.api.labels.NBLabels; import java.util.function.Function; @Service(value = DriverAdapter.class, selector = "dataapi") -public class DataApiDriverAdapter extends BaseDriverAdapter, DataApiSpace> { +public class DataApiDriverAdapter extends BaseDriverAdapter { public DataApiDriverAdapter(NBComponent parent, NBLabels childLabels) { super(parent, childLabels); } @Override - public OpMapper> getOpMapper() { + public OpMapper getOpMapper() { return new DataApiOpMapper(this); } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiOpMapper.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiOpMapper.java index 8e5d38c99..7e1ba4e1a 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiOpMapper.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiOpMapper.java @@ -26,7 +26,7 @@ import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class DataApiOpMapper implements OpMapper> { +public class DataApiOpMapper implements OpMapper { private static final Logger logger = LogManager.getLogger(DataApiOpMapper.class); private final DataApiDriverAdapter adapter; @@ -35,7 +35,7 @@ public class DataApiOpMapper implements OpMapper> { } @Override - public OpDispenser> apply(ParsedOp op) { + public OpDispenser apply(ParsedOp op) { TypeAndTarget typeAndTarget = op.getTypeAndTarget( DataApiOpType.class, String.class, @@ -55,7 +55,7 @@ public class DataApiOpMapper implements OpMapper> { case update_many -> new DataApiUpdateManyOpDispenser(adapter, op, typeAndTarget.targetFunction); case delete_one -> new DataApiDeleteOneOpDispenser(adapter, op, typeAndTarget.targetFunction); case delete_many -> new DataApiDeleteManyOpDispenser(adapter, op, typeAndTarget.targetFunction); - case delete_collection -> new DataApiDeleteCollectionOpDispenser(adapter, op, typeAndTarget.targetFunction); + case delete_collection -> new DataApiDropCollectionOpDispenser(adapter, op, typeAndTarget.targetFunction); }; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiSpace.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiSpace.java index 52de33322..0edf579e7 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiSpace.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/DataApiSpace.java @@ -16,6 +16,7 @@ package io.nosqlbench.adapter.dataapi; +import com.datastax.astra.client.Collection; import com.datastax.astra.client.DataAPIClient; import com.datastax.astra.client.Database; import io.nosqlbench.nb.api.config.standard.ConfigModel; @@ -58,6 +59,10 @@ public class DataApiSpace { private void createClient() { this.dataAPIClient = new DataAPIClient(astraToken); this.database = dataAPIClient.getDatabase(astraApiEndpoint); +// database.getCollection("test"); +// database.listCollections().forEach(System.out::println); +// Collection collection = database.getCollection("test"); +// collection.deleteMany() } private void setApiEndpoint() { diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiCreateCollectionOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiCreateCollectionOpDispenser.java index c7f21c482..5371196d4 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiCreateCollectionOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiCreateCollectionOpDispenser.java @@ -16,46 +16,58 @@ package io.nosqlbench.adapter.dataapi.opdispensers; +import com.datastax.astra.client.model.CollectionOptions; +import com.datastax.astra.client.model.SimilarityMetric; import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter; import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp; -import io.nosqlbench.adapters.api.evalctx.CycleFunction; +import io.nosqlbench.adapter.dataapi.ops.DataApiCreateCollectionOp; import io.nosqlbench.adapters.api.templating.ParsedOp; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import java.util.Optional; import java.util.function.LongFunction; -public class DataApiCreateCollectionOpDispenser extends DataApiBaseOpDispenser { +public class DataApiCreateCollectionOpDispenser extends DataApiOpDispenser { + private static final Logger logger = LogManager.getLogger(DataApiCreateCollectionOpDispenser.class); + private final LongFunction opFunction; + public DataApiCreateCollectionOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); + this.opFunction = createOpFunction(op); + } + + private LongFunction createOpFunction(ParsedOp op) { + return (l) -> { + CollectionOptions.CollectionOptionsBuilder optionsBldr = CollectionOptions.builder(); + Optional> dimFunc = op.getAsOptionalFunction("dimensions", Integer.class); + if (dimFunc.isPresent()) { + LongFunction af = dimFunc.get(); + optionsBldr.vectorDimension(af.apply(l)); + } +// COSINE("cosine"), +// EUCLIDEAN("euclidean"), +// DOT_PRODUCT("dot_product"); + Optional> simFunc = op.getAsOptionalFunction("similarity", String.class); + if (simFunc.isPresent()) { + LongFunction sf = simFunc.get(); + optionsBldr.vectorSimilarity(SimilarityMetric.valueOf(sf.apply(l))); + } + + DataApiCreateCollectionOp dataApiCreateCollectionOp = + new DataApiCreateCollectionOp( + spaceFunction.apply(l).getDatabase(), + targetFunction.apply(l), + optionsBldr.build()); + + return dataApiCreateCollectionOp; + }; } @Override - public DataApiBaseOp getOp(long value) { - return null; + public DataApiBaseOp getOp(long value) { + return opFunction.apply(value); } - @Override - public CycleFunction getVerifier() { - return null; - } - - @Override - public String getOpName() { - return null; - } - - @Override - public void onStart(long cycleValue) { - - } - - @Override - public void onSuccess(long cycleValue, long nanoTime) { - - } - - @Override - public void onError(long cycleValue, long resultNanos, Throwable t) { - - } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteManyOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteManyOpDispenser.java index 76893131c..674e8b706 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteManyOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteManyOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiDeleteManyOpDispenser extends DataApiBaseOpDispenser { +public class DataApiDeleteManyOpDispenser extends DataApiOpDispenser { public DataApiDeleteManyOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java index 06e7fce84..eb3c01fff 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiDeleteOneOpDispenser extends DataApiBaseOpDispenser { +public class DataApiDeleteOneOpDispenser extends DataApiOpDispenser { public DataApiDeleteOneOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDropCollectionOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDropCollectionOpDispenser.java new file mode 100644 index 000000000..dd3748956 --- /dev/null +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDropCollectionOpDispenser.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2024 nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.nosqlbench.adapter.dataapi.opdispensers; + +import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter; +import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp; +import io.nosqlbench.adapter.dataapi.ops.DataApiDropCollectionOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.function.LongFunction; + +public class DataApiDropCollectionOpDispenser extends DataApiOpDispenser { + private static final Logger logger = LogManager.getLogger(DataApiDropCollectionOpDispenser.class); + private final LongFunction opFunction; + public DataApiDropCollectionOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { + super(adapter, op, targetFunction); + this.opFunction = createOpFunction(op); + } + + private LongFunction createOpFunction(ParsedOp op) { + return (l) -> new DataApiDropCollectionOp( + spaceFunction.apply(l).getDatabase(), + targetFunction.apply(l) + ); + } + + @Override + public DataApiBaseOp getOp(long value) { + return opFunction.apply(value); + } +} diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndDeleteOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndDeleteOpDispenser.java index 69bb0be23..a4f8cfab7 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndDeleteOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndDeleteOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiFindOneAndDeleteOpDispenser extends DataApiBaseOpDispenser { +public class DataApiFindOneAndDeleteOpDispenser extends DataApiOpDispenser { public DataApiFindOneAndDeleteOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndUpdateOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndUpdateOpDispenser.java index c07d846d8..7f5d6fb03 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndUpdateOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndUpdateOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiFindOneAndUpdateOpDispenser extends DataApiBaseOpDispenser { +public class DataApiFindOneAndUpdateOpDispenser extends DataApiOpDispenser { public DataApiFindOneAndUpdateOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneOpDispenser.java index 1076f1275..3b6c6090e 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiFindOneOpDispenser extends DataApiBaseOpDispenser { +public class DataApiFindOneOpDispenser extends DataApiOpDispenser { public DataApiFindOneOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOpDispenser.java index 3e2a98629..6d6a0fe24 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiFindOpDispenser extends DataApiBaseOpDispenser { +public class DataApiFindOpDispenser extends DataApiOpDispenser { public DataApiFindOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiInsertManyOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiInsertManyOpDispenser.java index 685b35c5d..25b2a6537 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiInsertManyOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiInsertManyOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiInsertManyOpDispenser extends DataApiBaseOpDispenser { +public class DataApiInsertManyOpDispenser extends DataApiOpDispenser { public DataApiInsertManyOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiInsertOneOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiInsertOneOpDispenser.java index 8db5982cd..ee5b118a6 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiInsertOneOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiInsertOneOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiInsertOneOpDispenser extends DataApiBaseOpDispenser { +public class DataApiInsertOneOpDispenser extends DataApiOpDispenser { public DataApiInsertOneOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiBaseOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java similarity index 64% rename from nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiBaseOpDispenser.java rename to nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java index ef30a1450..45f5199af 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiBaseOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java @@ -22,10 +22,17 @@ import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.templating.ParsedOp; -public abstract class DataApiBaseOpDispenser extends BaseOpDispenser, DataApiSpace> { +import java.util.function.LongFunction; - protected DataApiBaseOpDispenser(DriverAdapter,? extends DataApiSpace> adapter, ParsedOp op) { +public abstract class DataApiOpDispenser extends BaseOpDispenser { + protected final LongFunction targetFunction; + protected final LongFunction spaceFunction; + + protected DataApiOpDispenser(DriverAdapter adapter, ParsedOp op, + LongFunction targetFunction) { super(adapter, op); + this.targetFunction = targetFunction; + this.spaceFunction = adapter.getSpaceFunc(op); } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiUpdateManyOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiUpdateManyOpDispenser.java index a375e1b02..82269b156 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiUpdateManyOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiUpdateManyOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiUpdateManyOpDispenser extends DataApiBaseOpDispenser { +public class DataApiUpdateManyOpDispenser extends DataApiOpDispenser { public DataApiUpdateManyOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiUpdateOneOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiUpdateOneOpDispenser.java index 2b400eb74..114c7945e 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiUpdateOneOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiUpdateOneOpDispenser.java @@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; -public class DataApiUpdateOneOpDispenser extends DataApiBaseOpDispenser { +public class DataApiUpdateOneOpDispenser extends DataApiOpDispenser { public DataApiUpdateOneOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + super(adapter, op, targetFunction); } @Override - public DataApiBaseOp> getOp(long value) { + public DataApiBaseOp getOp(long value) { return null; } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiBaseOp.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiBaseOp.java index 84074abd3..13181c5db 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiBaseOp.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiBaseOp.java @@ -16,7 +16,13 @@ package io.nosqlbench.adapter.dataapi.ops; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import com.datastax.astra.client.Database; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -public class DataApiBaseOp implements Op { +public abstract class DataApiBaseOp implements CycleOp { + protected final Database db; + + public DataApiBaseOp(Database db) { + this.db = db; + } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteCollectionOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiCreateCollectionOp.java similarity index 51% rename from nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteCollectionOpDispenser.java rename to nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiCreateCollectionOp.java index 48468c997..625ca385a 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteCollectionOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiCreateCollectionOp.java @@ -14,21 +14,23 @@ * limitations under the License. */ -package io.nosqlbench.adapter.dataapi.opdispensers; +package io.nosqlbench.adapter.dataapi.ops; -import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter; -import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp; -import io.nosqlbench.adapters.api.templating.ParsedOp; +import com.datastax.astra.client.Database; +import com.datastax.astra.client.model.CollectionOptions; -import java.util.function.LongFunction; +public class DataApiCreateCollectionOp extends DataApiBaseOp { + private final String collectionName; + private final CollectionOptions options; -public class DataApiDeleteCollectionOpDispenser extends DataApiBaseOpDispenser { - public DataApiDeleteCollectionOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { - super(adapter, op); + public DataApiCreateCollectionOp(Database db, String collectionName, CollectionOptions options) { + super(db); + this.collectionName = collectionName; + this.options = options; } @Override - public DataApiBaseOp> getOp(long value) { - return null; + public Object apply(long value) { + return db.createCollection(collectionName, options); } } diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiDropCollectionOp.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiDropCollectionOp.java new file mode 100644 index 000000000..ba45f98a0 --- /dev/null +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiDropCollectionOp.java @@ -0,0 +1,20 @@ +package io.nosqlbench.adapter.dataapi.ops; + +import com.datastax.astra.client.Database; + +public class DataApiDropCollectionOp extends DataApiBaseOp { + private final String collectionName; + public DataApiDropCollectionOp(Database db, String dbName) { + super(db); + this.collectionName = dbName; + } + + @Override + public Object apply(long value) { + Boolean exists = db.collectionExists(collectionName); + if (exists) { + db.dropCollection(collectionName); + } + return exists; + } +}