package org.rakam.clickhouse.analysis; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.rakam.collection.FieldType; import java.util.List; import static org.rakam.collection.FieldType.ARRAY_BINARY; import static org.rakam.collection.FieldType.DATE; import static org.rakam.collection.FieldType.DOUBLE; import static org.rakam.collection.FieldType.INTEGER; import static org.rakam.collection.FieldType.LONG; import static org.rakam.collection.FieldType.MAP_BINARY; import static org.rakam.collection.FieldType.STRING; import static org.rakam.collection.FieldType.TIMESTAMP; class ClickHouseQueryResult { public final List<ClickHouseColumn> meta; public final List<List<Object>> data; public final List<String> totals; public final List<Extreme> extremes; public final long rows; public final Long rowsBeforeLimitAtLeast; @JsonCreator private ClickHouseQueryResult( @JsonProperty("meta") List<ClickHouseColumn> meta, @JsonProperty("data") List<List<Object>> data, @JsonProperty("totals") List<String> totals, @JsonProperty("extremes") List<Extreme> extremes, @JsonProperty("rows") long rows, @JsonProperty("rows_before_limit_at_least") Long rowsBeforeLimitAtLeast) { this.meta = meta; this.data = data; this.totals = totals; this.extremes = extremes; this.rows = rows; this.rowsBeforeLimitAtLeast = rowsBeforeLimitAtLeast; } public static class Extreme { public final List<String> min; public final List<String> max; @JsonCreator public Extreme(@JsonProperty("min") List<String> min, @JsonProperty("max") List<String> max) { this.min = min; this.max = max; } } public static class ClickHouseColumn { public final String name; public final String type; @JsonCreator public ClickHouseColumn(@JsonProperty("name") String name, @JsonProperty("type") String type) { this.name = name; this.type = type; } } }