diff --git a/src/main/java/com/meilisearch/sdk/model/IndexStats.java b/src/main/java/com/meilisearch/sdk/model/IndexStats.java index fffbded5..756b35e0 100644 --- a/src/main/java/com/meilisearch/sdk/model/IndexStats.java +++ b/src/main/java/com/meilisearch/sdk/model/IndexStats.java @@ -1,7 +1,9 @@ package com.meilisearch.sdk.model; +import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Map; import lombok.Getter; +import lombok.Setter; /** * Stats data structure of a Meilisearch Index @@ -10,6 +12,7 @@ * specification */ @Getter +@Setter public class IndexStats { protected long numberOfDocuments; protected boolean isIndexing; @@ -18,6 +21,8 @@ public class IndexStats { protected long avgDocumentSize; protected long numberOfEmbeddedDocuments; protected long numberOfEmbeddings; + protected long indexSize; + protected long usedIndexSize; public IndexStats() {} @@ -29,6 +34,28 @@ public IndexStats( long avgDocumentSize, long numberOfEmbeddedDocuments, long numberOfEmbeddings) { + this( + numberOfDocuments, + isIndexing, + fieldDistribution, + rawDocumentDbSize, + avgDocumentSize, + numberOfEmbeddedDocuments, + numberOfEmbeddings, + 0L, + 0L); + } + + public IndexStats( + long numberOfDocuments, + boolean isIndexing, + Map fieldDistribution, + long rawDocumentDbSize, + long avgDocumentSize, + long numberOfEmbeddedDocuments, + long numberOfEmbeddings, + long indexSize, + long usedIndexSize) { this.numberOfDocuments = numberOfDocuments; this.isIndexing = isIndexing; this.fieldDistribution = fieldDistribution; @@ -36,5 +63,12 @@ public IndexStats( this.avgDocumentSize = avgDocumentSize; this.numberOfEmbeddedDocuments = numberOfEmbeddedDocuments; this.numberOfEmbeddings = numberOfEmbeddings; + this.indexSize = indexSize; + this.usedIndexSize = usedIndexSize; + } + + @JsonProperty("isIndexing") + public boolean isIndexing() { + return isIndexing; } } diff --git a/src/test/java/com/meilisearch/sdk/json/GsonJsonHandlerTest.java b/src/test/java/com/meilisearch/sdk/json/GsonJsonHandlerTest.java index 5de9593b..3cfaf7c9 100644 --- a/src/test/java/com/meilisearch/sdk/json/GsonJsonHandlerTest.java +++ b/src/test/java/com/meilisearch/sdk/json/GsonJsonHandlerTest.java @@ -291,6 +291,20 @@ void granularFilterableAttributesWithNullPatternRoundTrip() throws Exception { assertThat(decoded[0].getAttributePatterns(), arrayContaining("director", null, "genres")); } + @Test + void decodeIndexStatsWithIndexSizeAndUsedIndexSize() { + String json = + "{\"numberOfDocuments\":10,\"isIndexing\":false,\"fieldDistribution\":{},\"rawDocumentDbSize\":1024,\"avgDocumentSize\":102,\"numberOfEmbeddedDocuments\":0,\"numberOfEmbeddings\":0,\"indexSize\":2048,\"usedIndexSize\":1500}"; + + com.meilisearch.sdk.model.IndexStats indexStats = + classToTest.decode(json, com.meilisearch.sdk.model.IndexStats.class); + + assertThat(indexStats, is(notNullValue())); + assertThat(indexStats.getNumberOfDocuments(), is(equalTo(10L))); + assertThat(indexStats.getIndexSize(), is(equalTo(2048L))); + assertThat(indexStats.getUsedIndexSize(), is(equalTo(1500L))); + } + @Getter private static class Container { private Key key; diff --git a/src/test/java/com/meilisearch/sdk/json/JacksonJsonHandlerTest.java b/src/test/java/com/meilisearch/sdk/json/JacksonJsonHandlerTest.java index c30235b4..2479777d 100644 --- a/src/test/java/com/meilisearch/sdk/json/JacksonJsonHandlerTest.java +++ b/src/test/java/com/meilisearch/sdk/json/JacksonJsonHandlerTest.java @@ -178,4 +178,32 @@ void settingsWithAdvancedGranularFilterableAttributesRoundTripWithCustomMapper() .getComparison(), is(false)); } + + @Test + void decodeIndexStatsWithIndexSizeAndUsedIndexSize() throws Exception { + String json = + "{\"numberOfDocuments\":10,\"isIndexing\":false,\"fieldDistribution\":{},\"rawDocumentDbSize\":1024,\"avgDocumentSize\":102,\"numberOfEmbeddedDocuments\":0,\"numberOfEmbeddings\":0,\"indexSize\":2048,\"usedIndexSize\":1500}"; + + com.meilisearch.sdk.model.IndexStats indexStats = + classToTest.decode(json, com.meilisearch.sdk.model.IndexStats.class); + + assertThat(indexStats, is(notNullValue())); + assertThat(indexStats.getNumberOfDocuments(), is(equalTo(10L))); + assertThat(indexStats.getIndexSize(), is(equalTo(2048L))); + assertThat(indexStats.getUsedIndexSize(), is(equalTo(1500L))); + } + + @Test + void serializeIndexStats() throws Exception { + com.meilisearch.sdk.model.IndexStats indexStats = + new com.meilisearch.sdk.model.IndexStats( + 10, false, new java.util.HashMap<>(), 1024, 102, 0, 0, 2048, 1500); + + String json = classToTest.encode(indexStats); + + assertThat(json, org.hamcrest.Matchers.containsString("\"isIndexing\":false")); + assertThat( + json, + org.hamcrest.Matchers.not(org.hamcrest.Matchers.containsString("\"indexing\""))); + } }