Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,6 @@
package org.apache.couchdb.nouveau.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import jakarta.validation.constraints.NotEmpty;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class AnalyzeRequest {

@NotEmpty
private String analyzer;

@NotEmpty
private String text;

public AnalyzeRequest() {
// Jackson deserialization
}

public AnalyzeRequest(final String analyzer, final String text) {
this.analyzer = analyzer;
this.text = text;
}

@JsonProperty
public String getAnalyzer() {
return analyzer;
}

@JsonProperty
public String getText() {
return text;
}
}
public record AnalyzeRequest(@JsonProperty @NotEmpty String analyzer, @JsonProperty @NotEmpty String text) {}
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,8 @@
package org.apache.couchdb.nouveau.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class AnalyzeResponse {

@NotNull
private List<@NotEmpty String> tokens;

public AnalyzeResponse() {
// Jackson deserialization
}

public AnalyzeResponse(List<String> tokens) {
this.tokens = tokens;
}

@JsonProperty
public List<String> getTokens() {
return tokens;
}
}
public record AnalyzeResponse(@JsonProperty @NotNull List<@NotEmpty String> tokens) {}
Original file line number Diff line number Diff line change
Expand Up @@ -14,49 +14,17 @@
package org.apache.couchdb.nouveau.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;

public final class DocumentDeleteRequest extends DocumentRequest {

@PositiveOrZero
private final long matchSeq;

@Positive
private final long seq;

private final boolean purge;

public DocumentDeleteRequest(
@JsonProperty("match_seq") final long matchSeq,
@JsonProperty("seq") final long seq,
@JsonProperty("purge") final boolean purge) {
if (matchSeq < 0) {
throw new IllegalArgumentException("matchSeq must be 0 or greater");
}

if (seq < 1) {
throw new IllegalArgumentException("seq must be 1 or greater");
}
this.matchSeq = matchSeq;
this.seq = seq;
this.purge = purge;
}

public long getMatchSeq() {
return matchSeq;
}

public long getSeq() {
return seq;
}
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record DocumentDeleteRequest(
@PositiveOrZero @JsonProperty long matchSeq, @Positive @JsonProperty long seq, @JsonProperty boolean purge)
implements DocumentRequest {

public boolean isPurge() {
return purge;
}

@Override
public String toString() {
return "DocumentDeleteRequest [matchSeq=" + matchSeq + ", seq=" + seq + ", purge=" + purge + "]";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@
@JsonSubTypes.Type(value = DocumentDeleteRequest.class, name = "delete"),
@JsonSubTypes.Type(value = DocumentUpdateRequest.class, name = "update"),
})
public abstract class DocumentRequest {}
public interface DocumentRequest {}
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@
package org.apache.couchdb.nouveau.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

public record DocumentUpdate(@JsonProperty("doc_id") String docId, @JsonProperty("update") DocumentRequest request) {}
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record DocumentUpdate(@JsonProperty String docId, @JsonProperty DocumentRequest update) {}
Original file line number Diff line number Diff line change
Expand Up @@ -14,60 +14,21 @@
package org.apache.couchdb.nouveau.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;
import java.util.Collection;

public final class DocumentUpdateRequest extends DocumentRequest {

@PositiveOrZero
private final long matchSeq;

@Positive
private final long seq;

private final String partition;

@NotEmpty
@Valid
private final Collection<Field> fields;

public DocumentUpdateRequest(
@JsonProperty("match_seq") final long matchSeq,
@JsonProperty("seq") final long seq,
@JsonProperty("partition") final String partition,
@JsonProperty("fields") final Collection<Field> fields) {
this.matchSeq = matchSeq;
this.seq = seq;
this.partition = partition;
this.fields = fields;
}

public long getMatchSeq() {
return matchSeq;
}

public long getSeq() {
return seq;
}

public String getPartition() {
return partition;
}
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record DocumentUpdateRequest(
@PositiveOrZero @JsonProperty long matchSeq,
@Positive @JsonProperty long seq,
@JsonProperty String partition,
@JsonProperty Collection<Field> fields)
implements DocumentRequest {

public boolean hasPartition() {
return partition != null;
}

public Collection<Field> getFields() {
return fields;
}

@Override
public String toString() {
return "DocumentUpdateRequest [matchSeq=" + matchSeq + ", seq=" + seq + ", partition=" + partition + ", fields="
+ fields + "]";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,39 +14,6 @@
package org.apache.couchdb.nouveau.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import jakarta.validation.constraints.NotNull;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class DoubleField extends Field {

@NotNull
private final Double value;

private final boolean store;

public DoubleField(
@JsonProperty("name") final String name,
@JsonProperty("value") final Double value,
@JsonProperty("store") final boolean store) {
super(name);
this.value = value;
this.store = store;
}

@JsonProperty
public Double getValue() {
return value;
}

@JsonProperty
public boolean isStore() {
return store;
}

@Override
public String toString() {
return "DoubleField [name=" + name + ", value=" + value + ", store=" + store + "]";
}
}
public record DoubleField(@JsonProperty String name, @JsonProperty double value, @JsonProperty boolean store)
implements Field {}
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,33 @@

package org.apache.couchdb.nouveau.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import jakarta.validation.constraints.NotEmpty;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class DoubleRange extends Range<Double> {
public record DoubleRange(
@JsonProperty @NotEmpty String label,
@JsonProperty Double min,
@JsonProperty Boolean minInclusive,
@JsonProperty Double max,
@JsonProperty Boolean maxInclusive) {

public DoubleRange() {}
public DoubleRange {
if (minInclusive == null) {
minInclusive = true;
}
if (maxInclusive == null) {
maxInclusive = true;
}
}

public boolean isMinInclusive() {
return minInclusive;
}

public DoubleRange(String name, Double min, boolean minInclusive, Double max, boolean maxInclusive) {
super(name, min, minInclusive, max, maxInclusive);
public boolean isMaxInclusive() {
return maxInclusive;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,32 +13,19 @@

package org.apache.couchdb.nouveau.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import jakarta.validation.constraints.Pattern;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@type")
@JsonSubTypes({
@JsonSubTypes.Type(value = DoubleField.class, name = "double"),
@JsonSubTypes.Type(value = StoredField.class, name = "stored"),
@JsonSubTypes.Type(value = StringField.class, name = "string"),
@JsonSubTypes.Type(value = TextField.class, name = "text"),
})
public abstract class Field {
public interface Field {

@Pattern(regexp = "^\\$?[a-zA-Z][a-zA-Z0-9_]*$")
protected final String name;

protected Field(final String name) {
this.name = name;
}

@JsonProperty
public String getName() {
return name;
}
String name();
}
Loading