Skip to content

Commit ecdb537

Browse files
authored
Merge pull request #513 from weaviate/v6-single-weaviate-object
v6: Re-unite Read-/WriteWeaviateObject
2 parents 9db7b9b + 7ac1501 commit ecdb537

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+706
-783
lines changed

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

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,14 @@
2121
import io.weaviate.client6.v1.api.collections.ReferenceProperty;
2222
import io.weaviate.client6.v1.api.collections.VectorConfig;
2323
import io.weaviate.client6.v1.api.collections.Vectors;
24+
import io.weaviate.client6.v1.api.collections.WeaviateObject;
2425
import io.weaviate.client6.v1.api.collections.data.BatchReference;
2526
import io.weaviate.client6.v1.api.collections.data.DeleteManyResponse;
26-
import io.weaviate.client6.v1.api.collections.data.Reference;
27-
import io.weaviate.client6.v1.api.collections.data.WriteWeaviateObject;
27+
import io.weaviate.client6.v1.api.collections.data.ObjectReference;
2828
import io.weaviate.client6.v1.api.collections.query.Filter;
2929
import io.weaviate.client6.v1.api.collections.query.Metadata;
3030
import io.weaviate.client6.v1.api.collections.query.Metadata.MetadataField;
31-
import io.weaviate.client6.v1.api.collections.query.QueryMetadata;
3231
import io.weaviate.client6.v1.api.collections.query.QueryReference;
33-
import io.weaviate.client6.v1.api.collections.query.ReadWeaviateObject;
3432
import io.weaviate.client6.v1.api.collections.tenants.Tenant;
3533
import io.weaviate.containers.Container;
3634

@@ -66,20 +64,20 @@ public void testCreateGetDelete() throws IOException {
6664
Assertions.assertThat(object)
6765
.as("object has correct properties").get()
6866
.satisfies(obj -> {
69-
Assertions.assertThat(obj.metadata().uuid())
67+
Assertions.assertThat(obj.uuid())
7068
.as("object id").isEqualTo(id);
7169

72-
Assertions.assertThat(obj.metadata().vectors().getSingle(VECTOR_INDEX))
70+
Assertions.assertThat(obj.vectors().getSingle(VECTOR_INDEX))
7371
.containsExactly(vector);
7472

7573
Assertions.assertThat(obj.properties())
7674
.as("has expected properties")
7775
.containsEntry("name", "john doe");
7876

79-
Assertions.assertThat(obj.metadata().creationTimeUnix())
80-
.as("creationTimeUnix").isNotNull();
81-
Assertions.assertThat(obj.metadata().lastUpdateTimeUnix())
82-
.as("lastUpdateTimeUnix").isNotNull();
77+
Assertions.assertThat(obj.createdAt())
78+
.as("createdAt").isNotNull();
79+
Assertions.assertThat(obj.lastUpdatedAt())
80+
.as("lastUpdatedAt").isNotNull();
8381
});
8482

8583
var deleted = artists.data.deleteById(id);
@@ -114,7 +112,7 @@ public void testBlobData() throws IOException {
114112
cat -> cat.returnProperties("img"));
115113

116114
Assertions.assertThat(got).get()
117-
.extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
115+
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
118116
.extractingByKey("img").isEqualTo(ragdollPng);
119117
}
120118

@@ -153,7 +151,7 @@ public void testReferences_AddReplaceDelete() throws IOException {
153151
persons.data.referenceAdd(
154152
john.uuid(),
155153
"hasFriend",
156-
Reference.object(albie));
154+
ObjectReference.object(albie));
157155

158156
// Assert
159157
var johnWithFriends = persons.query.fetchObjectById(john.uuid(),
@@ -163,18 +161,18 @@ public void testReferences_AddReplaceDelete() throws IOException {
163161

164162
Assertions.assertThat(johnWithFriends).get()
165163
.as("friends after ADD")
166-
.extracting(ReadWeaviateObject::references).extracting("hasFriend")
167-
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
164+
.extracting(WeaviateObject::references).extracting("hasFriend")
165+
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
168166
.hasSize(1)
169-
.first().extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
167+
.first().extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
170168
.returns("albie", friend -> friend.get("name"));
171169

172170
// Act: replace reference
173171
var barbara = persons.data.insert(Map.of("name", "barbara"));
174172
persons.data.referenceReplace(
175173
john.uuid(),
176174
"hasFriend",
177-
Reference.object(barbara));
175+
ObjectReference.object(barbara));
178176

179177
johnWithFriends = persons.query.fetchObjectById(john.uuid(),
180178
query -> query.returnReferences(
@@ -183,17 +181,17 @@ public void testReferences_AddReplaceDelete() throws IOException {
183181

184182
Assertions.assertThat(johnWithFriends).get()
185183
.as("friends after REPLACE")
186-
.extracting(ReadWeaviateObject::references).extracting("hasFriend")
187-
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
184+
.extracting(WeaviateObject::references).extracting("hasFriend")
185+
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
188186
.hasSize(1)
189-
.first().extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
187+
.first().extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
190188
.returns("barbara", friend -> friend.get("name"));
191189

192190
// Act: delete reference
193191
persons.data.referenceDelete(
194192
john.uuid(),
195193
"hasFriend",
196-
Reference.object(barbara));
194+
ObjectReference.object(barbara));
197195

198196
// Assert
199197
johnWithFriends = persons.query.fetchObjectById(john.uuid(),
@@ -202,8 +200,8 @@ public void testReferences_AddReplaceDelete() throws IOException {
202200

203201
Assertions.assertThat(johnWithFriends).get()
204202
.as("friends after DELETE")
205-
.extracting(ReadWeaviateObject::references).extracting("hasFriend")
206-
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
203+
.extracting(WeaviateObject::references).extracting("hasFriend")
204+
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
207205
.isEmpty();
208206
}
209207

@@ -229,7 +227,7 @@ public void testReplace() throws IOException {
229227

230228
Assertions.assertThat(replacedIvanhoe).get()
231229
.as("has ONLY year property")
232-
.extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
230+
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
233231
.doesNotContain(Map.entry("title", "ivanhoe"))
234232
.contains(Map.entry("year", 1819L));
235233
}
@@ -265,7 +263,7 @@ public void testUpdate() throws IOException {
265263
books.data.update(ivanhoe.uuid(),
266264
update -> update
267265
.properties(Map.of("year", 1819))
268-
.reference("writtenBy", Reference.objects(walter))
266+
.reference("writtenBy", ObjectReference.objects(walter))
269267
.vectors(Vectors.of(vector)));
270268

271269
// Assert
@@ -279,21 +277,20 @@ public void testUpdate() throws IOException {
279277
.satisfies(book -> {
280278
Assertions.assertThat(book)
281279
.as("has both year and title property")
282-
.extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
280+
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
283281
.contains(Map.entry("title", "ivanhoe"), Map.entry("year", 1819L));
284282

285283
Assertions.assertThat(book)
286284
.as("has reference to Authors")
287-
.extracting(ReadWeaviateObject::references, InstanceOfAssertFactories.MAP)
288-
.extractingByKey("writtenBy", InstanceOfAssertFactories.list(ReadWeaviateObject.class))
285+
.extracting(WeaviateObject::references, InstanceOfAssertFactories.MAP)
286+
.extractingByKey("writtenBy", InstanceOfAssertFactories.list(WeaviateObject.class))
289287
.first()
290-
.extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
288+
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
291289
.contains(Map.entry("name", "walter scott"));
292290

293291
Assertions.assertThat(book)
294292
.as("has a vector")
295-
.extracting(ReadWeaviateObject::metadata)
296-
.extracting(QueryMetadata::vectors)
293+
.extracting(WeaviateObject::vectors)
297294
.returns(vector, Vectors::getDefaultSingle);
298295
});
299296
}
@@ -386,7 +383,7 @@ public void testReferenceAddMany() throws IOException {
386383

387384
var alpha = airports.data.insert(Map.of()).uuid();
388385
var goodburg = cities.data.insert(Map.of(), city -> city
389-
.reference("hasAirports", Reference.uuids(alpha)));
386+
.reference("hasAirports", ObjectReference.uuid(alpha)));
390387

391388
// Act
392389
var newAirports = airports.data.insertMany(Map.of(), Map.of());
@@ -404,10 +401,10 @@ public void testReferenceAddMany() throws IOException {
404401

405402
Assertions.assertThat(goodburgAirports).get()
406403
.as("Goodburg has 3 airports")
407-
.extracting(ReadWeaviateObject::references)
404+
.extracting(WeaviateObject::references)
408405
.extracting(references -> references.get("hasAirports"),
409-
InstanceOfAssertFactories.list(ReadWeaviateObject.class))
410-
.extracting(ReadWeaviateObject::uuid)
406+
InstanceOfAssertFactories.list(WeaviateObject.class))
407+
.extracting(WeaviateObject::uuid)
411408
.contains(alpha, bravo, charlie);
412409
}
413410

@@ -485,7 +482,7 @@ public void testDataTypes() throws IOException {
485482

486483
// Assert
487484
Assertions.assertThat(got).get()
488-
.extracting(ReadWeaviateObject::properties)
485+
.extracting(WeaviateObject::properties)
489486
.asInstanceOf(InstanceOfAssertFactories.map(String.class, Object.class))
490487
// Most of PhoneNumber fields are only present on read and are null on write.
491488
.usingRecursiveComparison()
@@ -557,6 +554,6 @@ public void test_multiTenant() throws IOException {
557554
var inserted = emails.data.insert(Map.of("subject", "McDonald's Xmas Bonanza"));
558555

559556
// Assert
560-
Assertions.assertThat(inserted).returns(johndoe, WriteWeaviateObject::tenant);
557+
Assertions.assertThat(inserted).returns(johndoe, WeaviateObject::tenant);
561558
}
562559
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
import io.weaviate.client6.v1.api.collections.CollectionConfig;
1818
import io.weaviate.client6.v1.api.collections.GeoCoordinates;
1919
import io.weaviate.client6.v1.api.collections.PhoneNumber;
20+
import io.weaviate.client6.v1.api.collections.WeaviateObject;
2021
import io.weaviate.client6.v1.api.collections.annotations.Collection;
2122
import io.weaviate.client6.v1.api.collections.annotations.Property;
2223
import io.weaviate.client6.v1.api.collections.data.InsertManyResponse.InsertObject;
23-
import io.weaviate.client6.v1.api.collections.query.ReadWeaviateObject;
2424
import io.weaviate.client6.v1.api.collections.query.Filter;
2525
import io.weaviate.containers.Container;
2626

@@ -358,7 +358,7 @@ public void test_partialScan() throws IOException {
358358

359359
// Assert
360360
Assertions.assertThat(got).get()
361-
.extracting(ReadWeaviateObject::properties)
361+
.extracting(WeaviateObject::properties)
362362
.returns("Dystopia", Song::title)
363363
.returns(null, Song::album)
364364
.returns(0, Song::year)

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818
import io.weaviate.client6.v1.api.WeaviateClient;
1919
import io.weaviate.client6.v1.api.WeaviateException;
2020
import io.weaviate.client6.v1.api.collections.Property;
21+
import io.weaviate.client6.v1.api.collections.WeaviateObject;
2122
import io.weaviate.client6.v1.api.collections.pagination.PaginationException;
2223
import io.weaviate.client6.v1.api.collections.query.Metadata;
23-
import io.weaviate.client6.v1.api.collections.query.QueryMetadata;
24-
import io.weaviate.client6.v1.api.collections.query.ReadWeaviateObject;
2524
import io.weaviate.containers.Container;
2625

2726
public class PaginationITest extends ConcurrentTest {
@@ -46,8 +45,7 @@ public void testIterateAll() throws IOException {
4645
var allThings = things.paginate();
4746

4847
// Act: stream
49-
var gotStream = allThings.stream()
50-
.map(ReadWeaviateObject::metadata).map(QueryMetadata::uuid).toList();
48+
var gotStream = allThings.stream().map(WeaviateObject::uuid).toList();
5149

5250
// Assert
5351
Assertions.assertThat(gotStream)
@@ -58,7 +56,7 @@ public void testIterateAll() throws IOException {
5856
// Act: for-loop
5957
var gotLoop = new ArrayList<String>();
6058
for (var thing : allThings) {
61-
gotLoop.add(thing.metadata().uuid());
59+
gotLoop.add(thing.uuid());
6260
}
6361

6462
// Assert
@@ -89,7 +87,7 @@ public void testResumePagination() throws IOException {
8987

9088
// Iterate over first 5 objects
9189
String lastId = things.paginate(p -> p.pageSize(5)).stream()
92-
.limit(5).map(thing -> thing.metadata().uuid())
90+
.limit(5).map(thing -> thing.uuid())
9391
.reduce((prev, next) -> next).get();
9492

9593
// Act
@@ -126,8 +124,7 @@ public void testWithQueryOptions() throws IOException {
126124
.as("uuid=" + thing.uuid())
127125
.doesNotContainKey("dont_fetch");
128126

129-
Assertions.assertThat(thing.metadata().creationTimeUnix())
130-
.isNotNull();
127+
Assertions.assertThat(thing.createdAt()).isNotNull();
131128
}
132129
}
133130

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
import io.weaviate.client6.v1.api.WeaviateClient;
1414
import io.weaviate.client6.v1.api.collections.Property;
1515
import io.weaviate.client6.v1.api.collections.ReferenceProperty;
16-
import io.weaviate.client6.v1.api.collections.data.Reference;
16+
import io.weaviate.client6.v1.api.collections.WeaviateObject;
17+
import io.weaviate.client6.v1.api.collections.data.ObjectReference;
1718
import io.weaviate.client6.v1.api.collections.query.QueryReference;
18-
import io.weaviate.client6.v1.api.collections.query.ReadWeaviateObject;
1919
import io.weaviate.containers.Container;
2020

2121
/**
@@ -72,9 +72,9 @@ public void testReferences() throws IOException {
7272
var alex = artists.data.insert(
7373
Map.of("name", "Alex"),
7474
opt -> opt
75-
.reference("hasAwards", Reference.uuids(
75+
.reference("hasAwards", ObjectReference.uuids(
7676
grammy_1.uuid(), oscar_1.uuid()))
77-
.reference("hasAwards", Reference.objects(grammy_2, oscar_2)));
77+
.reference("hasAwards", ObjectReference.objects(grammy_2, oscar_2)));
7878

7979
// Act: add one more reference
8080
var nsMovies = ns("Movies");
@@ -99,9 +99,9 @@ public void testReferences() throws IOException {
9999
.as("Artists: fetch by id including hasAwards references")
100100

101101
// Cast references to Map<String, List<QueryWeaviateObject>>
102-
.extracting(ReadWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
102+
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
103103
.as("hasAwards object reference").extractingByKey("hasAwards")
104-
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
104+
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
105105

106106
.extracting(object -> object.uuid())
107107
.containsOnly(
@@ -146,12 +146,12 @@ public void testNestedReferences() throws IOException {
146146
var musicAcademy = academies.data.insert(Map.of("ceo", "Harvy Mason"));
147147

148148
var grammy_1 = grammies.data.insert(Map.of(),
149-
opt -> opt.reference("presentedBy", Reference.objects(musicAcademy)));
149+
opt -> opt.reference("presentedBy", ObjectReference.objects(musicAcademy)));
150150

151151
var alex = artists.data.insert(
152152
Map.of("name", "Alex"),
153153
opt -> opt
154-
.reference("hasAwards", Reference.objects(grammy_1)));
154+
.reference("hasAwards", ObjectReference.objects(grammy_1)));
155155

156156
// Assert: fetch nested references
157157
var gotAlex = artists.query.fetchObjectById(alex.uuid(),
@@ -166,19 +166,19 @@ public void testNestedReferences() throws IOException {
166166
.as("Artists: fetch by id including nested references")
167167

168168
// Cast references to Map<String, List<QueryWeaviateObject>>
169-
.extracting(ReadWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
169+
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
170170
.as("hasAwards object reference").extractingByKey("hasAwards")
171-
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
171+
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
172172

173173
.hasSize(1).allSatisfy(award -> Assertions.assertThat(award)
174174
.returns(grammy_1.uuid(), grammy -> grammy.uuid())
175175

176176
// Cast references to Map<String, List<QueryWeaviateObject>>
177-
.extracting(ReadWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
177+
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
178178
.as("presentedBy object reference").extractingByKey("presentedBy")
179-
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
179+
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
180180

181-
.hasSize(1).extracting(ReadWeaviateObject::properties)
181+
.hasSize(1).extracting(WeaviateObject::properties)
182182
.allSatisfy(properties -> Assertions.assertThat(properties)
183183
.asInstanceOf(InstanceOfAssertFactories.map(String.class, Object.class))
184184
.containsEntry("ceo", "Harvy Mason")));

0 commit comments

Comments
 (0)