Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/main/java/io/weaviate/client/WeaviateClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import io.weaviate.client.base.util.DbVersionProvider;
import io.weaviate.client.base.util.DbVersionSupport;
import io.weaviate.client.base.util.GrpcVersionSupport;
import io.weaviate.client.v1.aliases.Aliases;
import io.weaviate.client.v1.async.WeaviateAsyncClient;
import io.weaviate.client.v1.auth.provider.AccessTokenProvider;
import io.weaviate.client.v1.backup.Backup;
Expand Down Expand Up @@ -111,6 +112,10 @@ public Users users() {
return new Users(httpClient, config);
}

public Aliases aliases() {
Comment thread
bevzzz marked this conversation as resolved.
Outdated
return new Aliases(httpClient, config);
}

private DbVersionProvider initDbVersionProvider() {
MetaGetter metaGetter = new Misc(httpClient, config, null).metaGetter();
DbVersionProvider.VersionGetter getter = () -> Optional.ofNullable(metaGetter.run())
Expand Down
46 changes: 30 additions & 16 deletions src/main/java/io/weaviate/client/base/AsyncBaseClient.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
package io.weaviate.client.base;

import io.weaviate.client.Config;
import io.weaviate.client.base.http.async.ResponseParser;
import io.weaviate.client.base.http.async.WeaviateResponseConsumer;
import io.weaviate.client.v1.auth.provider.AccessTokenProvider;
import java.util.Map;
import java.util.concurrent.Future;

import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
import org.apache.hc.core5.concurrent.FutureCallback;
import org.apache.hc.core5.http.ContentType;
import org.apache.hc.core5.http.HttpHeaders;

import io.weaviate.client.Config;
import io.weaviate.client.base.http.async.ResponseParser;
import io.weaviate.client.base.http.async.WeaviateResponseConsumer;
import io.weaviate.client.v1.auth.provider.AccessTokenProvider;

public abstract class AsyncBaseClient<T> {
protected final CloseableHttpAsyncClient client;
private final Config config;
Expand All @@ -30,52 +32,64 @@ protected Future<Result<T>> sendGetRequest(String endpoint, Class<T> classOfT, F
return sendRequest(endpoint, null, "GET", classOfT, callback, null);
}

protected Future<Result<T>> sendGetRequest(String endpoint, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendGetRequest(String endpoint, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, null, "GET", null, callback, parser);
}

protected Future<Result<T>> sendPostRequest(String endpoint, Object payload, Class<T> classOfT, FutureCallback<Result<T>> callback) {
protected Future<Result<T>> sendPostRequest(String endpoint, Object payload, Class<T> classOfT,
FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, payload, "POST", classOfT, callback, null);
}

protected Future<Result<T>> sendPostRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendPostRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, payload, "POST", null, callback, parser);
}

protected Future<Result<T>> sendPutRequest(String endpoint, Object payload, Class<T> classOfT, FutureCallback<Result<T>> callback) {
protected Future<Result<T>> sendPutRequest(String endpoint, Object payload, Class<T> classOfT,
FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, payload, "PUT", classOfT, callback, null);
}

protected Future<Result<T>> sendPutRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendPutRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, payload, "PUT", null, callback, parser);
}

protected Future<Result<T>> sendPatchRequest(String endpoint, Object payload, Class<T> classOfT, FutureCallback<Result<T>> callback) {
protected Future<Result<T>> sendPatchRequest(String endpoint, Object payload, Class<T> classOfT,
FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, payload, "PATCH", classOfT, callback, null);
}

protected Future<Result<T>> sendPatchRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendPatchRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, payload, "PATCH", null, callback, parser);
}

protected Future<Result<T>> sendDeleteRequest(String endpoint, Object payload, Class<T> classOfT, FutureCallback<Result<T>> callback) {
protected Future<Result<T>> sendDeleteRequest(String endpoint, Object payload, Class<T> classOfT,
FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, payload, "DELETE", classOfT, callback, null);
}

protected Future<Result<T>> sendDeleteRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendDeleteRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, payload, "DELETE", null, callback, parser);
}

protected Future<Result<T>> sendHeadRequest(String endpoint, Class<T> classOfT, FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, null, "HEAD", classOfT, callback, null);
}

protected Future<Result<T>> sendHeadRequest(String endpoint, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendHeadRequest(String endpoint, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, null, "HEAD", null, callback, parser);
}

private Future<Result<T>> sendRequest(String endpoint, Object payload, String method, Class<T> classOfT, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
return client.execute(SimpleRequestProducer.create(getRequest(endpoint, payload, method)), new WeaviateResponseConsumer<>(classOfT, parser), callback);
private Future<Result<T>> sendRequest(String endpoint, Object payload, String method, Class<T> classOfT,
FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
return client.execute(SimpleRequestProducer.create(getRequest(endpoint, payload, method)),
new WeaviateResponseConsumer<>(classOfT, parser), callback);
}

protected SimpleHttpRequest getRequest(String endpoint, Object payload, String method) {
Expand Down
39 changes: 39 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/Aliases.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package io.weaviate.client.v1.aliases;

import io.weaviate.client.Config;
import io.weaviate.client.base.http.HttpClient;
import io.weaviate.client.v1.aliases.api.AliasAllGetter;
import io.weaviate.client.v1.aliases.api.AliasCreator;
import io.weaviate.client.v1.aliases.api.AliasDeleter;
import io.weaviate.client.v1.aliases.api.AliasGetter;
import io.weaviate.client.v1.aliases.api.AliasUpdater;

public class Aliases {
private final Config config;
private final HttpClient httpClient;

public Aliases(HttpClient httpClient, Config config) {
this.config = config;
this.httpClient = httpClient;
}

public AliasCreator creator() {
return new AliasCreator(httpClient, config);
}

public AliasGetter getter() {
return new AliasGetter(httpClient, config);
}

public AliasAllGetter allGetter() {
return new AliasAllGetter(httpClient, config);
}

public AliasDeleter deleter() {
return new AliasDeleter(httpClient, config);
}

public AliasUpdater updater() {
return new AliasUpdater(httpClient, config);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package io.weaviate.client.v1.aliases.api;

import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Response;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;
import io.weaviate.client.v1.aliases.api.AliasAllGetter.ResponseBody;
import io.weaviate.client.v1.aliases.model.Alias;

public class AliasAllGetter extends BaseClient<ResponseBody> implements ClientResult<Map<String, Alias>> {
Comment thread
bevzzz marked this conversation as resolved.
public AliasAllGetter(HttpClient httpClient, Config config) {
super(httpClient, config);
}

static class ResponseBody {
List<Alias> aliases;
}

@Override
public Result<Map<String, Alias>> run() {
Response<ResponseBody> resp = sendGetRequest("/aliases", ResponseBody.class);
if (resp.getErrors() != null) {
return new Result<>(resp, null);
}
Map<String, Alias> aliases = resp.getBody().aliases.stream()
.collect(Collectors.toMap(Alias::getAlias, Function.identity()));
return new Result<>(resp, aliases);
}
}
34 changes: 34 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/api/AliasCreator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package io.weaviate.client.v1.aliases.api;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Response;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;
import io.weaviate.client.v1.aliases.model.Alias;

public class AliasCreator extends BaseClient<Void> implements ClientResult<Boolean> {
private String className;
private String alias;

public AliasCreator(HttpClient httpClient, Config config) {
super(httpClient, config);
}

public AliasCreator withClassName(String className) {
this.className = className;
return this;
}

public AliasCreator withAlias(String alias) {
this.alias = alias;
return this;
}

@Override
public Result<Boolean> run() {
Response<Void> resp = sendPostRequest("/aliases", new Alias(className, alias), Void.class);
return Result.voidToBoolean(resp);
}
}
27 changes: 27 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/api/AliasDeleter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package io.weaviate.client.v1.aliases.api;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Response;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;

public class AliasDeleter extends BaseClient<Void> implements ClientResult<Boolean> {
private String alias;

public AliasDeleter(HttpClient httpClient, Config config) {
super(httpClient, config);
}

public AliasDeleter withAlias(String alias) {
this.alias = alias;
return this;
}

@Override
public Result<Boolean> run() {
Response<Void> resp = sendDeleteRequest("/aliases/" + alias, null, Void.class);
return Result.voidToBoolean(resp);
}
}
26 changes: 26 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/api/AliasGetter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.weaviate.client.v1.aliases.api;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;
import io.weaviate.client.v1.aliases.model.Alias;

public class AliasGetter extends BaseClient<Alias> implements ClientResult<Alias> {
private String alias;

public AliasGetter(HttpClient httpClient, Config config) {
super(httpClient, config);
}

public AliasGetter withAlias(String alias) {
this.alias = alias;
return this;
}

@Override
public Result<Alias> run() {
return new Result<>(sendGetRequest("/aliases/" + alias, Alias.class));
}
}
40 changes: 40 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/api/AliasUpdater.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package io.weaviate.client.v1.aliases.api;

import com.google.gson.annotations.SerializedName;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Response;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;

public class AliasUpdater extends BaseClient<Void> implements ClientResult<Boolean> {
private String className;
private String alias;

public AliasUpdater(HttpClient httpClient, Config config) {
super(httpClient, config);
}

public AliasUpdater withAlias(String alias) {
this.alias = alias;
return this;
}

public AliasUpdater withNewClassName(String className) {
this.className = className;
return this;
}

class Body {
@SerializedName("class")
String className = AliasUpdater.this.className;
}

@Override
public Result<Boolean> run() {
Response<Void> resp = sendPutRequest("/aliases/" + alias, new Body(), Void.class);
return Result.voidToBoolean(resp);
}
}
17 changes: 17 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/model/Alias.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.weaviate.client.v1.aliases.model;

import com.google.gson.annotations.SerializedName;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
@EqualsAndHashCode
public class Alias {
@SerializedName("class")
private final String className;
@SerializedName("alias")
private final String alias;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import io.weaviate.client.base.util.DbVersionProvider;
import io.weaviate.client.base.util.DbVersionSupport;
import io.weaviate.client.base.util.GrpcVersionSupport;
import io.weaviate.client.v1.async.aliases.Aliases;
import io.weaviate.client.v1.async.backup.Backup;
import io.weaviate.client.v1.async.batch.Batch;
import io.weaviate.client.v1.async.classifications.Classifications;
Expand Down Expand Up @@ -84,6 +85,10 @@ public Users users() {
return new Users(client, config, tokenProvider);
}

public Aliases aliases() {
return new Aliases(client, config, tokenProvider);
}

private DbVersionProvider initDbVersionProvider() {
DbVersionProvider.VersionGetter getter = () -> Optional.ofNullable(this.getMeta())
.filter(result -> !result.hasErrors())
Expand Down
Loading
Loading