Skip to content

Commit f7140dd

Browse files
committed
feat: always include ID into metadata response
1 parent d215a66 commit f7140dd

7 files changed

Lines changed: 59 additions & 40 deletions

File tree

src/it/java/io/weaviate/integration/DataITest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void testCreateGetDelete() throws IOException {
5151
var object = artists.query.byId(id, query -> query
5252
.returnProperties("name")
5353
.returnMetadata(
54-
Metadata.UUID, Metadata.VECTOR,
54+
Metadata.VECTOR,
5555
Metadata.CREATION_TIME_UNIX, Metadata.LAST_UPDATE_TIME_UNIX));
5656

5757
Assertions.assertThat(artists.data.exists(id))
@@ -259,8 +259,7 @@ public void testUpdate() throws IOException {
259259
query -> query
260260
.returnMetadata(Metadata.VECTOR)
261261
.returnReferences(
262-
QueryReference.single("writtenBy",
263-
writtenBy -> writtenBy.returnMetadata(Metadata.UUID))));
262+
QueryReference.single("writtenBy")));
264263

265264
Assertions.assertThat(updIvanhoe).get()
266265
.satisfies(book -> {
@@ -387,8 +386,7 @@ public void testReferenceAddMany() throws IOException {
387386

388387
var goodburgAirports = cities.query.byId(goodburg.metadata().uuid(),
389388
city -> city.returnReferences(
390-
QueryReference.single("hasAirports",
391-
airport -> airport.returnMetadata(Metadata.UUID))));
389+
QueryReference.single("hasAirports")));
392390

393391
Assertions.assertThat(goodburgAirports).get()
394392
.as("Goodburg has 3 airports")

src/it/java/io/weaviate/integration/ReferencesITest.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import io.weaviate.client6.v1.api.collections.ReferenceProperty;
1717
import io.weaviate.client6.v1.api.collections.WeaviateObject;
1818
import io.weaviate.client6.v1.api.collections.data.Reference;
19-
import io.weaviate.client6.v1.api.collections.query.Metadata;
2019
import io.weaviate.client6.v1.api.collections.query.QueryReference;
2120
import io.weaviate.containers.Container;
2221

@@ -94,10 +93,8 @@ public void testReferences() throws IOException {
9493

9594
var gotAlex = artists.query.byId(alex.metadata().uuid(),
9695
opt -> opt.returnReferences(
97-
QueryReference.multi("hasAwards", nsOscar,
98-
ref -> ref.returnMetadata(Metadata.UUID)),
99-
QueryReference.multi("hasAwards", nsGrammy,
100-
ref -> ref.returnMetadata(Metadata.UUID))));
96+
QueryReference.multi("hasAwards", nsOscar),
97+
QueryReference.multi("hasAwards", nsGrammy)));
10198

10299
Assertions.assertThat(gotAlex).get()
103100
.as("Artists: fetch by id including hasAwards references")
@@ -164,9 +161,7 @@ public void testNestedReferences() throws IOException {
164161
ref -> ref
165162
// Name of the CEO of the presenting academy
166163
.returnReferences(
167-
QueryReference.single("presentedBy", r -> r.returnProperties("ceo")))
168-
// Grammy ID
169-
.returnMetadata(Metadata.UUID))));
164+
QueryReference.single("presentedBy", r -> r.returnProperties("ceo"))))));
170165

171166
Assertions.assertThat(gotAlex).get()
172167
.as("Artists: fetch by id including nested references")

src/it/java/io/weaviate/integration/SearchITest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ public void testHybrid() throws IOException {
362362
// Act
363363
var winterSport = hobbies.query.hybrid("winter",
364364
hybrid -> hybrid
365-
.returnMetadata(Metadata.UUID, Metadata.SCORE, Metadata.EXPLAIN_SCORE));
365+
.returnMetadata(Metadata.SCORE, Metadata.EXPLAIN_SCORE));
366366

367367
// Assert
368368
Assertions.assertThat(winterSport.objects())

src/main/java/io/weaviate/client6/v1/api/collections/query/BaseQueryOptions.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import org.apache.commons.lang3.StringUtils;
88

9+
import io.weaviate.client6.v1.api.collections.query.Metadata.MetadataField;
910
import io.weaviate.client6.v1.internal.ObjectBuilder;
1011
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBase;
1112
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
@@ -47,6 +48,10 @@ public static abstract class Builder<SELF extends Builder<SELF, T>, T extends Ob
4748
private List<QueryReference> returnReferences = new ArrayList<>();
4849
private List<Metadata> returnMetadata = new ArrayList<>();
4950

51+
protected Builder() {
52+
returnMetadata(MetadataField.UUID);
53+
}
54+
5055
public final SELF limit(int limit) {
5156
this.limit = limit;
5257
return (SELF) this;
@@ -151,11 +156,7 @@ final void appendTo(WeaviateProtoSearchGet.SearchRequest.Builder req) {
151156
}
152157

153158
var metadata = WeaviateProtoSearchGet.MetadataRequest.newBuilder();
154-
if (returnMetadata.isEmpty()) {
155-
Metadata.UUID.appendTo(metadata);
156-
} else {
157-
returnMetadata.forEach(m -> m.appendTo(metadata));
158-
}
159+
returnMetadata.forEach(m -> m.appendTo(metadata));
159160
req.setMetadata(metadata);
160161

161162
if (!returnProperties.isEmpty() || !returnReferences.isEmpty()) {

src/main/java/io/weaviate/client6/v1/api/collections/query/ById.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22

33
import java.util.ArrayList;
44
import java.util.Arrays;
5+
import java.util.HashSet;
56
import java.util.List;
7+
import java.util.Set;
68
import java.util.function.Function;
79

10+
import io.weaviate.client6.v1.api.collections.query.Metadata.MetadataField;
811
import io.weaviate.client6.v1.internal.ObjectBuilder;
912
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBase;
1013
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
@@ -27,35 +30,48 @@ public static ById of(String uuid, Function<Builder, ObjectBuilder<ById>> fn) {
2730

2831
public ById(Builder builder) {
2932
this(builder.uuid,
30-
builder.returnProperties,
33+
new ArrayList<>(builder.returnProperties),
3134
builder.returnReferences,
32-
builder.returnMetadata);
35+
new ArrayList<>(builder.returnMetadata));
3336
}
3437

3538
public static class Builder implements ObjectBuilder<ById> {
3639
// Required query parameters.
3740
private final String uuid;
3841

39-
private List<String> returnProperties = new ArrayList<>();
42+
private Set<String> returnProperties = new HashSet<>();
4043
private List<QueryReference> returnReferences = new ArrayList<>();
41-
private List<Metadata> returnMetadata = new ArrayList<>();
44+
private Set<Metadata> returnMetadata = new HashSet<>();
4245

4346
public Builder(String uuid) {
4447
this.uuid = uuid;
48+
returnMetadata(MetadataField.UUID);
4549
}
4650

4751
public final Builder returnProperties(String... properties) {
48-
this.returnProperties = Arrays.asList(properties);
52+
return returnProperties(Arrays.asList(properties));
53+
}
54+
55+
public final Builder returnProperties(List<String> properties) {
56+
this.returnProperties.addAll(properties);
4957
return this;
5058
}
5159

5260
public final Builder returnReferences(QueryReference... references) {
53-
this.returnReferences = Arrays.asList(references);
61+
return returnReferences(Arrays.asList(references));
62+
}
63+
64+
public final Builder returnReferences(List<QueryReference> references) {
65+
this.returnReferences.addAll(references);
5466
return this;
5567
}
5668

5769
public final Builder returnMetadata(Metadata... metadata) {
58-
this.returnMetadata = Arrays.asList(metadata);
70+
return returnMetadata(Arrays.asList(metadata));
71+
}
72+
73+
public final Builder returnMetadata(List<Metadata> metadata) {
74+
this.returnMetadata.addAll(metadata);
5975
return this;
6076
}
6177

@@ -73,9 +89,6 @@ public void appendTo(WeaviateProtoSearchGet.SearchRequest.Builder req) {
7389
req.setFilters(filter);
7490

7591
var metadata = WeaviateProtoSearchGet.MetadataRequest.newBuilder();
76-
if (returnMetadata.isEmpty()) {
77-
returnMetadata.add(Metadata.UUID);
78-
}
7992
returnMetadata.forEach(m -> m.appendTo(metadata));
8093
req.setMetadata(metadata);
8194

src/main/java/io/weaviate/client6/v1/api/collections/query/Metadata.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
public interface Metadata {
1212
void appendTo(WeaviateProtoSearchGet.MetadataRequest.Builder metadata);
1313

14-
/** Include UUID of the object in the metadata response. */
15-
public static final Metadata UUID = MetadataField.UUID;
1614
/** Include associated vector in the metadata response. */
1715
public static final Metadata VECTOR = MetadataField.VECTOR;
1816
/** Include object creation time in the metadata response. */

src/main/java/io/weaviate/client6/v1/api/collections/query/QueryReference.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.List;
66
import java.util.function.Function;
77

8+
import io.weaviate.client6.v1.api.collections.query.Metadata.MetadataField;
89
import io.weaviate.client6.v1.internal.ObjectBuilder;
910
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1011

@@ -38,7 +39,7 @@ public static QueryReference single(String property, Function<Builder, ObjectBui
3839

3940
// TODO: check if we can supply mutiple collections
4041
public static QueryReference multi(String property, String collection) {
41-
return multi(collection, property, ObjectBuilder.identity());
42+
return multi(property, collection, ObjectBuilder.identity());
4243
}
4344

4445
public static QueryReference multi(String property, String collection,
@@ -50,17 +51,18 @@ public static class Builder implements ObjectBuilder<QueryReference> {
5051
private final String property;
5152
private final String collection;
5253

53-
public Builder(String collection, String property) {
54-
this.property = property;
55-
this.collection = collection;
56-
}
57-
5854
private boolean includeVector;
5955
private List<String> includeVectors = new ArrayList<>();
6056
private List<String> returnProperties = new ArrayList<>();
6157
private List<QueryReference> returnReferences = new ArrayList<>();
6258
private List<Metadata> returnMetadata = new ArrayList<>();
6359

60+
public Builder(String collection, String property) {
61+
this.property = property;
62+
this.collection = collection;
63+
returnMetadata(MetadataField.UUID);
64+
}
65+
6466
public final Builder includeVector() {
6567
this.includeVector = true;
6668
return this;
@@ -72,17 +74,29 @@ public final Builder includeVectors(String... vectors) {
7274
}
7375

7476
public final Builder returnProperties(String... properties) {
75-
this.returnProperties = Arrays.asList(properties);
77+
return returnProperties(Arrays.asList(properties));
78+
}
79+
80+
public final Builder returnProperties(List<String> properties) {
81+
this.returnProperties.addAll(properties);
7682
return this;
7783
}
7884

7985
public final Builder returnReferences(QueryReference... references) {
80-
this.returnReferences = Arrays.asList(references);
86+
return returnReferences(Arrays.asList(references));
87+
}
88+
89+
public final Builder returnReferences(List<QueryReference> references) {
90+
this.returnReferences.addAll(references);
8191
return this;
8292
}
8393

8494
public final Builder returnMetadata(Metadata... metadata) {
85-
this.returnMetadata = Arrays.asList(metadata);
95+
return returnMetadata(Arrays.asList(metadata));
96+
}
97+
98+
public final Builder returnMetadata(List<Metadata> metadata) {
99+
this.returnMetadata.addAll(metadata);
86100
return this;
87101
}
88102

0 commit comments

Comments
 (0)