diff --git a/src/main/java/io/weaviate/client/v1/misc/model/MultiTenancyConfig.java b/src/main/java/io/weaviate/client/v1/misc/model/MultiTenancyConfig.java index 50b6432ae..b9331263f 100644 --- a/src/main/java/io/weaviate/client/v1/misc/model/MultiTenancyConfig.java +++ b/src/main/java/io/weaviate/client/v1/misc/model/MultiTenancyConfig.java @@ -14,4 +14,5 @@ @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public class MultiTenancyConfig { Boolean enabled; + Boolean autoTenantCreation; } diff --git a/src/main/java/io/weaviate/client/v1/schema/Schema.java b/src/main/java/io/weaviate/client/v1/schema/Schema.java index 0f4168d99..82ca18e4e 100644 --- a/src/main/java/io/weaviate/client/v1/schema/Schema.java +++ b/src/main/java/io/weaviate/client/v1/schema/Schema.java @@ -1,7 +1,7 @@ package io.weaviate.client.v1.schema; -import io.weaviate.client.base.http.HttpClient; import io.weaviate.client.Config; +import io.weaviate.client.base.http.HttpClient; import io.weaviate.client.v1.schema.api.ClassCreator; import io.weaviate.client.v1.schema.api.ClassDeleter; import io.weaviate.client.v1.schema.api.ClassExists; @@ -15,6 +15,7 @@ import io.weaviate.client.v1.schema.api.ShardsUpdater; import io.weaviate.client.v1.schema.api.TenantsCreator; import io.weaviate.client.v1.schema.api.TenantsDeleter; +import io.weaviate.client.v1.schema.api.TenantsExists; import io.weaviate.client.v1.schema.api.TenantsGetter; import io.weaviate.client.v1.schema.api.TenantsUpdater; @@ -86,4 +87,8 @@ public TenantsDeleter tenantsDeleter() { public TenantsGetter tenantsGetter() { return new TenantsGetter(httpClient, config); } + + public TenantsExists tenantsExists() { + return new TenantsExists(httpClient, config); + } } diff --git a/src/main/java/io/weaviate/client/v1/schema/api/TenantsExists.java b/src/main/java/io/weaviate/client/v1/schema/api/TenantsExists.java new file mode 100644 index 000000000..00ab6a314 --- /dev/null +++ b/src/main/java/io/weaviate/client/v1/schema/api/TenantsExists.java @@ -0,0 +1,37 @@ +package io.weaviate.client.v1.schema.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.base.util.UrlEncoder; +import org.apache.http.HttpStatus; + +public class TenantsExists extends BaseClient implements ClientResult { + + private String className; + private String tenant; + + public TenantsExists(HttpClient httpClient, Config config) { + super(httpClient, config); + } + + public TenantsExists withClassName(String className) { + this.className = className; + return this; + } + + public TenantsExists withTenant(String tenant) { + this.tenant = tenant; + return this; + } + + @Override + public Result run() { + String path = String.format("/schema/%s/tenants/%s", UrlEncoder.encodePathParam(className), UrlEncoder.encodePathParam(tenant)); + Response resp = sendHeadRequest(path, Object.class); + return new Result<>(resp.getStatusCode(), resp.getStatusCode() == HttpStatus.SC_OK, resp.getErrors()); + } +} diff --git a/src/test/java/io/weaviate/integration/client/schema/ClientSchemaMultiTenancyTest.java b/src/test/java/io/weaviate/integration/client/schema/ClientSchemaMultiTenancyTest.java index 1c28bdc3b..8d3446e53 100644 --- a/src/test/java/io/weaviate/integration/client/schema/ClientSchemaMultiTenancyTest.java +++ b/src/test/java/io/weaviate/integration/client/schema/ClientSchemaMultiTenancyTest.java @@ -149,6 +149,17 @@ public void shouldAddTenantsToMTClass() { assertThat(addResult).isNotNull() .returns(false, Result::hasErrors) .returns(true, Result::getResult); + + for (String tenant: tenants) { + Result exists = client.schema().tenantsExists() + .withClassName("Pizza") + .withTenant(tenant) + .run(); + + assertThat(exists).isNotNull() + .returns(false, Result::hasErrors) + .returns(true, Result::getResult); + } } @Test