Skip to content

Commit 4dd9849

Browse files
committed
fix error on update
1 parent 762fb0c commit 4dd9849

File tree

7 files changed

+51
-18
lines changed

7 files changed

+51
-18
lines changed

astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import com.datastax.astra.client.collections.commands.options.CollectionUpdateManyOptions;
4141
import com.datastax.astra.client.collections.commands.options.CountDocumentsOptions;
4242
import com.datastax.astra.client.collections.commands.options.EstimatedCountDocumentsOptions;
43-
import com.datastax.astra.client.collections.commands.options.UpdateOneOptions;
43+
import com.datastax.astra.client.collections.commands.options.CollectionUpdateOneOptions;
4444
import com.datastax.astra.client.collections.commands.results.CollectionDeleteResult;
4545
import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
4646
import com.datastax.astra.client.collections.commands.results.CollectionInsertOneResult;
@@ -62,8 +62,6 @@
6262
import com.datastax.astra.client.exceptions.DataAPIException;
6363
import com.datastax.astra.client.exceptions.UnexpectedDataAPIResponseException;
6464
import com.datastax.astra.client.tables.commands.options.TableDistinctOptions;
65-
import com.datastax.astra.client.tables.commands.options.TableFindOptions;
66-
import com.datastax.astra.client.tables.definition.rows.Row;
6765
import com.datastax.astra.internal.api.DataAPIResponse;
6866
import com.datastax.astra.internal.api.DataAPIStatus;
6967
import com.datastax.astra.internal.command.AbstractCommandRunner;
@@ -90,7 +88,6 @@
9088

9189
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_CHUNK_SIZE;
9290
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_COUNT;
93-
import static com.datastax.astra.client.core.DataAPIKeywords.SORT_VECTOR;
9491
import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_INTERRUPTED;
9592
import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_TIMEOUT;
9693
import static com.datastax.astra.internal.utils.AnsiUtils.cyan;
@@ -1645,7 +1642,7 @@ public Optional<T> findOneAndUpdate(Filter filter, Update update, CollectionFind
16451642
* the result of the update one operation
16461643
*/
16471644
public CollectionUpdateResult updateOne(Filter filter, Update update) {
1648-
return updateOne(filter, update, new UpdateOneOptions());
1645+
return updateOne(filter, update, new CollectionUpdateOneOptions());
16491646
}
16501647

16511648
/**
@@ -1660,7 +1657,7 @@ public CollectionUpdateResult updateOne(Filter filter, Update update) {
16601657
* @return
16611658
* the result of the update one operation
16621659
*/
1663-
public CollectionUpdateResult updateOne(Filter filter, Update update, UpdateOneOptions updateOptions) {
1660+
public CollectionUpdateResult updateOne(Filter filter, Update update, CollectionUpdateOneOptions updateOptions) {
16641661
notNull(update, ARG_UPDATE);
16651662
notNull(updateOptions, ARG_OPTIONS);
16661663
Command cmd = Command
@@ -1693,7 +1690,7 @@ private static CollectionUpdateResult getUpdateResult(DataAPIResponse apiRespons
16931690
result.setModifiedCount(status.getInteger(RESULT_MODIFIED_COUNT));
16941691
}
16951692
if (status.containsKey(RESULT_UPSERTED_ID)) {
1696-
result.setMatchedCount(status.getInteger(RESULT_UPSERTED_ID));
1693+
result.setUpsertedId(status.get(RESULT_UPSERTED_ID));
16971694
}
16981695
}
16991696
return result;

astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/Update.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public Update updateMul(Map<String, Double> fields) {
253253
* @return
254254
* reference to self
255255
*/
256-
public Update updateSetOnInsert(Map<String, Double> fields) {
256+
public Update updateSetOnInsert(Map<String, Object> fields) {
257257
fields.forEach((key, value) -> update("$setOnInsert", key, value));
258258
return this;
259259
}

astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/Updates.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public static Update unset(String field) {
105105
* @return
106106
* update object
107107
*/
108-
public static Update updateSetOnInsert( Map<String, Double> fields) {
108+
public static Update updateSetOnInsert( Map<String, Object> fields) {
109109
return new Update().updateSetOnInsert(fields);
110110
}
111111

astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/UpdateOneOptions.java renamed to astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionUpdateOneOptions.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.datastax.astra.client.core.options.BaseOptions;
2424
import com.datastax.astra.client.core.query.Sort;
2525
import lombok.Getter;
26-
import lombok.NoArgsConstructor;
2726
import lombok.Setter;
2827
import lombok.experimental.Accessors;
2928

@@ -32,7 +31,7 @@
3231
*/
3332
@Getter @Setter
3433
@Accessors(fluent = true, chain = true)
35-
public class UpdateOneOptions extends BaseOptions<UpdateOneOptions> {
34+
public class CollectionUpdateOneOptions extends BaseOptions<CollectionUpdateOneOptions> {
3635

3736
/**
3837
* if upsert is selected
@@ -47,7 +46,7 @@ public class UpdateOneOptions extends BaseOptions<UpdateOneOptions> {
4746
/**
4847
* Default constructor.
4948
*/
50-
public UpdateOneOptions() {}
49+
public CollectionUpdateOneOptions() {}
5150

5251
/**
5352
* Adding this on top of sort(Sort[] s) to allow for a more fluent API.
@@ -56,7 +55,7 @@ public UpdateOneOptions() {}
5655
* @return
5756
* current command
5857
*/
59-
public UpdateOneOptions sort(Sort... s) {
58+
public CollectionUpdateOneOptions sort(Sort... s) {
6059
this.sort = s;
6160
return this;
6261
}

astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIStatus.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,17 @@ public Integer getInteger(final String key) {
154154
return (Integer) get(key);
155155
}
156156

157+
/**
158+
* Gets the value of the given key as an Integer.
159+
*
160+
* @param key the key
161+
* @return the value as an integer, which may be null
162+
* @throws ClassCastException if the value is not an integer
163+
*/
164+
public String getString(final String key) {
165+
return (String) get(key);
166+
}
167+
157168
/**
158169
* Gets the value of the given key as a Boolean.
159170
*

astra-db-java/src/test/java/com/datastax/astra/test/integration/prod/AstraProdCollectionEvolutionTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
import com.datastax.astra.client.DataAPIClient;
44
import com.datastax.astra.client.DataAPIClients;
55
import com.datastax.astra.client.collections.Collection;
6+
import com.datastax.astra.client.collections.commands.Update;
7+
import com.datastax.astra.client.collections.commands.Updates;
8+
import com.datastax.astra.client.collections.commands.options.CollectionUpdateOneOptions;
9+
import com.datastax.astra.client.collections.commands.results.CollectionUpdateResult;
610
import com.datastax.astra.client.collections.definition.documents.Document;
11+
import com.datastax.astra.client.core.query.Filter;
12+
import com.datastax.astra.client.core.query.Filters;
713
import com.datastax.astra.client.databases.Database;
814
import org.junit.jupiter.api.Assertions;
915
import org.junit.jupiter.api.Test;
@@ -137,6 +143,26 @@ public void shouldWorkWithDistinct() {
137143
System.out.println(races);
138144
}
139145

146+
@Test
147+
public void shouldNotErrorOnUpdates() {
148+
Collection<Document> ccc = getCollection(true);
149+
ccc.insertOne(new Document("1")
150+
.append("isCheckedOut", true)
151+
.append("numberOfPages", 1)
152+
.append("color", "blue"));
153+
154+
Filter filter = Filters.and(
155+
Filters.eq("isCheckedOut", false),
156+
Filters.lt("numberOfPages", 10));
157+
Update update = Updates.set("color", "yellow");
158+
CollectionUpdateOneOptions options = new CollectionUpdateOneOptions().upsert(true);
159+
CollectionUpdateResult result = ccc.updateOne(filter, update, options);
160+
System.out.println(result.getMatchedCount());
161+
System.out.println(result.getModifiedCount());
162+
System.out.println(result.getUpsertedId());
163+
164+
}
165+
140166

141167

142168
}

astra-db-java/src/test/java/com/datastax/astra/test/unit/DataApiOptionsTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import com.datastax.astra.client.core.query.Sort;
2020
import com.datastax.astra.client.core.vector.SimilarityMetric;
2121
import com.datastax.astra.client.collections.commands.Update;
22-
import com.datastax.astra.client.collections.commands.options.UpdateOneOptions;
22+
import com.datastax.astra.client.collections.commands.options.CollectionUpdateOneOptions;
2323
import com.datastax.astra.client.collections.commands.Updates;
2424
import com.datastax.astra.client.core.vector.VectorOptions;
2525
import com.datastax.astra.client.core.vectorize.VectorServiceOptions;
@@ -108,10 +108,10 @@ void shouldInitializeFindOneAndDeleteOptions() {
108108

109109
@Test
110110
void shouldInitializeUpdateOne() {
111-
assertThat(new UpdateOneOptions().sort(Sort.ascending("test"))).isNotNull();
112-
assertThat(new UpdateOneOptions().upsert(true)).isNotNull();
113-
assertThat(new UpdateOneOptions().sort(Sort.vector(new float[]{}))).isNotNull();
114-
assertThat(new UpdateOneOptions().sort(Sort.vectorize("OK"))
111+
assertThat(new CollectionUpdateOneOptions().sort(Sort.ascending("test"))).isNotNull();
112+
assertThat(new CollectionUpdateOneOptions().upsert(true)).isNotNull();
113+
assertThat(new CollectionUpdateOneOptions().sort(Sort.vector(new float[]{}))).isNotNull();
114+
assertThat(new CollectionUpdateOneOptions().sort(Sort.vectorize("OK"))
115115
.sort(Sort.ascending("test"))
116116
.upsert(true)
117117
.sort(Sort.vectorize("OK"))

0 commit comments

Comments
 (0)