|
| 1 | +package io.weaviate.client6.v1.api.collections.data; |
| 2 | + |
| 3 | +import java.util.Collections; |
| 4 | +import java.util.function.Function; |
| 5 | + |
| 6 | +import com.google.gson.reflect.TypeToken; |
| 7 | + |
| 8 | +import io.weaviate.client6.v1.api.collections.ObjectMetadata; |
| 9 | +import io.weaviate.client6.v1.api.collections.Vectors; |
| 10 | +import io.weaviate.client6.v1.api.collections.WeaviateObject; |
| 11 | +import io.weaviate.client6.v1.internal.ObjectBuilder; |
| 12 | +import io.weaviate.client6.v1.internal.json.JSON; |
| 13 | +import io.weaviate.client6.v1.internal.orm.CollectionDescriptor; |
| 14 | +import io.weaviate.client6.v1.internal.rest.Endpoint; |
| 15 | + |
| 16 | +public record ReplaceObjectRequest<T>(WeaviateObject<T, Reference, ObjectMetadata> object) { |
| 17 | + |
| 18 | + static final <T> Endpoint<ReplaceObjectRequest<T>, Void> endpoint(CollectionDescriptor<T> collectionDescriptor) { |
| 19 | + return Endpoint.of( |
| 20 | + request -> "PUT", |
| 21 | + request -> "/objects/" + collectionDescriptor.name() + "/" + request.object.metadata().uuid(), |
| 22 | + (gson, request) -> JSON.serialize(request.object, TypeToken.getParameterized( |
| 23 | + WeaviateObject.class, collectionDescriptor.typeToken().getType(), Reference.class, ObjectMetadata.class)), |
| 24 | + request -> Collections.emptyMap(), |
| 25 | + code -> code != 200, |
| 26 | + (gson, response) -> null); |
| 27 | + } |
| 28 | + |
| 29 | + public static <T> ReplaceObjectRequest<T> of(String collectionName, String uuid, |
| 30 | + Function<ReplaceObjectRequest.Builder<T>, ObjectBuilder<ReplaceObjectRequest<T>>> fn) { |
| 31 | + return fn.apply(new Builder<>(collectionName, uuid)).build(); |
| 32 | + } |
| 33 | + |
| 34 | + public ReplaceObjectRequest(Builder<T> builder) { |
| 35 | + this(builder.object.build()); |
| 36 | + } |
| 37 | + |
| 38 | + public static class Builder<T> implements ObjectBuilder<ReplaceObjectRequest<T>> { |
| 39 | + private final WeaviateObject.Builder<T, Reference, ObjectMetadata> object = new WeaviateObject.Builder<>(); |
| 40 | + private final ObjectMetadata.Builder metadata = new ObjectMetadata.Builder(); |
| 41 | + |
| 42 | + public Builder(String collectionName, String uuid) { |
| 43 | + this.object.collection(collectionName); |
| 44 | + this.metadata.uuid(uuid); |
| 45 | + } |
| 46 | + |
| 47 | + public Builder<T> properties(T properties) { |
| 48 | + this.object.properties(properties); |
| 49 | + return this; |
| 50 | + } |
| 51 | + |
| 52 | + public Builder<T> vectors(Vectors vectors) { |
| 53 | + this.metadata.vectors(vectors); |
| 54 | + return this; |
| 55 | + } |
| 56 | + |
| 57 | + public Builder<T> reference(String property, Reference... references) { |
| 58 | + this.object.reference(property, references); |
| 59 | + return this; |
| 60 | + } |
| 61 | + |
| 62 | + @Override |
| 63 | + public ReplaceObjectRequest<T> build() { |
| 64 | + this.object.metadata(this.metadata.build()); |
| 65 | + return new ReplaceObjectRequest<>(this); |
| 66 | + } |
| 67 | + } |
| 68 | +} |
0 commit comments