99
1010import io .weaviate .client6 .v1 .api .collections .CollectionHandleDefaults ;
1111import io .weaviate .client6 .v1 .api .collections .GeoCoordinates ;
12- import io .weaviate .client6 .v1 .api .collections .ObjectMetadata ;
1312import io .weaviate .client6 .v1 .api .collections .PhoneNumber ;
14- import io .weaviate .client6 .v1 .api .collections .WeaviateObject ;
1513import io .weaviate .client6 .v1 .internal .MapUtil ;
1614import io .weaviate .client6 .v1 .internal .grpc .ByteStringUtil ;
1715import io .weaviate .client6 .v1 .internal .grpc .Rpc ;
2220import io .weaviate .client6 .v1 .internal .grpc .protocol .WeaviateProtoBatch ;
2321import io .weaviate .client6 .v1 .internal .orm .CollectionDescriptor ;
2422
25- public record InsertManyRequest <T >(List <WeaviateObject < T , Reference , ObjectMetadata >> objects ) {
23+ public record InsertManyRequest <PropertiesT >(List <WriteWeaviateObject < PropertiesT >> objects ) {
2624
2725 @ SafeVarargs
28- public InsertManyRequest (WeaviateObject < T , Reference , ObjectMetadata >... objects ) {
26+ public InsertManyRequest (WriteWeaviateObject < PropertiesT >... objects ) {
2927 this (Arrays .asList (objects ));
3028 }
3129
30+ @ SuppressWarnings ("unchecked" )
3231 @ SafeVarargs
33- public static final <T > InsertManyRequest <T > of (T ... properties ) {
32+ public static final <PropertiesT > InsertManyRequest <PropertiesT > of (PropertiesT ... properties ) {
3433 var objects = Arrays .stream (properties )
35- .map (p -> WeaviateObject .<T , Reference , ObjectMetadata >of (
36- obj -> obj .properties (p ).metadata (ObjectMetadata .of ())))
34+ .map (p -> (WriteWeaviateObject <PropertiesT >) WriteWeaviateObject .of (obj -> obj .properties (p )))
3735 .toList ();
38- return new InsertManyRequest <T >(objects );
36+ return new InsertManyRequest <>(objects );
3937 }
4038
41- public static <T > Rpc <InsertManyRequest <T >, WeaviateProtoBatch .BatchObjectsRequest , InsertManyResponse , WeaviateProtoBatch .BatchObjectsReply > rpc (
42- List <WeaviateObject < T , Reference , ObjectMetadata >> insertObjects ,
43- CollectionDescriptor <T > collection ,
39+ public static <PropertiesT > Rpc <InsertManyRequest <PropertiesT >, WeaviateProtoBatch .BatchObjectsRequest , InsertManyResponse , WeaviateProtoBatch .BatchObjectsReply > rpc (
40+ List <WriteWeaviateObject < PropertiesT >> insertObjects ,
41+ CollectionDescriptor <PropertiesT > collection ,
4442 CollectionHandleDefaults defaults ) {
4543 return Rpc .insert (
4644 request -> {
@@ -75,8 +73,8 @@ public static <T> Rpc<InsertManyRequest<T>, WeaviateProtoBatch.BatchObjectsReque
7573 while (iter .hasNext ()) {
7674 var idx = iter .nextIndex ();
7775 var next = iter .next ();
78- var uuid = next .metadata () != null ? next .metadata ().uuid () : null ;
7976
77+ var uuid = next .uuid ();
8078 if (failed .containsKey (idx )) {
8179 var err = failed .get (idx );
8280 errors .add (err );
@@ -94,72 +92,62 @@ public static <T> Rpc<InsertManyRequest<T>, WeaviateProtoBatch.BatchObjectsReque
9492 }
9593
9694 public static <T > void buildObject (WeaviateProtoBatch .BatchObject .Builder object ,
97- WeaviateObject < T , Reference , ObjectMetadata > insert ,
95+ WriteWeaviateObject < T > insert ,
9896 CollectionDescriptor <T > collection ,
9997 CollectionHandleDefaults defaults ) {
10098 object .setCollection (collection .collectionName ());
10199
102- var metadata = insert .metadata ();
103- if (metadata != null ) {
104- object .setUuid (metadata .uuid ());
105-
106- if (metadata .vectors () != null ) {
107- var vectors = metadata .vectors ().asMap ()
108- .entrySet ().stream ().map (entry -> {
109- var value = entry .getValue ();
110- var vector = WeaviateProtoBase .Vectors .newBuilder ()
111- .setName (entry .getKey ());
112-
113- if (value instanceof float [] single ) {
114- vector .setType (VectorType .VECTOR_TYPE_SINGLE_FP32 );
115- vector .setVectorBytes (ByteStringUtil .encodeVectorSingle (single ));
116- } else if (value instanceof float [][] multi ) {
117- vector .setVectorBytes (ByteStringUtil .encodeVectorMulti (multi ));
118- vector .setType (VectorType .VECTOR_TYPE_MULTI_FP32 );
119- }
120-
121- return vector .build ();
122- }).toList ();
123- object .addAllVectors (vectors );
124- }
125- if (defaults .tenant () != null ) {
126- object .setTenant (defaults .tenant ());
127- }
100+ object .setUuid (insert .uuid ());
101+
102+ if (insert .vectors () != null ) {
103+ var vectors = insert .vectors ().asMap ()
104+ .entrySet ().stream ().map (entry -> {
105+ var value = entry .getValue ();
106+ var vector = WeaviateProtoBase .Vectors .newBuilder ()
107+ .setName (entry .getKey ());
108+
109+ if (value instanceof float [] single ) {
110+ vector .setType (VectorType .VECTOR_TYPE_SINGLE_FP32 );
111+ vector .setVectorBytes (ByteStringUtil .encodeVectorSingle (single ));
112+ } else if (value instanceof float [][] multi ) {
113+ vector .setVectorBytes (ByteStringUtil .encodeVectorMulti (multi ));
114+ vector .setType (VectorType .VECTOR_TYPE_MULTI_FP32 );
115+ }
116+
117+ return vector .build ();
118+ }).toList ();
119+ object .addAllVectors (vectors );
120+ }
121+ if (defaults .tenant () != null ) {
122+ object .setTenant (defaults .tenant ());
128123 }
129124
130125 var singleRef = new ArrayList <WeaviateProtoBatch .BatchObject .SingleTargetRefProps >();
131126 var multiRef = new ArrayList <WeaviateProtoBatch .BatchObject .MultiTargetRefProps >();
132127
133- insert .references ()
134- .entrySet ().stream ().forEach (entry -> {
135- var references = entry .getValue ();
136-
137- // dyma: How are we supposed to know if the reference
138- // is single- or multi-target?
139- for (var ref : references ) {
140- if (ref .collection () == null ) {
141- singleRef .add (
142- WeaviateProtoBatch .BatchObject .SingleTargetRefProps .newBuilder ()
143- .addAllUuids (ref .uuids ())
144- .setPropName (entry .getKey ())
145- .build ());
146- } else {
147- multiRef .add (
148- WeaviateProtoBatch .BatchObject .MultiTargetRefProps .newBuilder ()
149- .setTargetCollection (ref .collection ())
150- .addAllUuids (ref .uuids ())
151- .setPropName (entry .getKey ())
152- .build ());
153- }
154- }
155- });
128+ insert .references ().entrySet ().stream ().forEach (entry -> {
129+ var references = entry .getValue ();
130+
131+ // dyma: How are we supposed to know if the reference
132+ // is single- or multi-target?
133+ for (var ref : references ) {
134+ if (ref .collection () == null ) {
135+ singleRef .add (WeaviateProtoBatch .BatchObject .SingleTargetRefProps .newBuilder ().addAllUuids (ref .uuids ())
136+ .setPropName (entry .getKey ()).build ());
137+ } else {
138+ multiRef .add (WeaviateProtoBatch .BatchObject .MultiTargetRefProps .newBuilder ()
139+ .setTargetCollection (ref .collection ()).addAllUuids (ref .uuids ()).setPropName (entry .getKey ()).build ());
140+ }
141+ }
142+ });
156143
157144 var properties = WeaviateProtoBatch .BatchObject .Properties .newBuilder ()
158145 .addAllSingleTargetRefProps (singleRef )
159146 .addAllMultiTargetRefProps (multiRef );
160147
161148 if (insert .properties () != null ) {
162- var nonRef = marshalStruct (collection .propertiesReader (insert .properties ()).readProperties ());
149+ var nonRef = marshalStruct (collection .propertiesReader (insert .properties ())
150+ .readProperties ());
163151 properties .setNonRefProperties (nonRef );
164152 }
165153 object .setProperties (properties );
0 commit comments