Skip to content

Commit

Permalink
feat(core): Schema title annotation for Custom Dashboard Filter
Browse files Browse the repository at this point in the history
  • Loading branch information
Skraye committed Jan 21, 2025
1 parent f8b2056 commit c337d55
Show file tree
Hide file tree
Showing 22 changed files with 44 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package io.kestra.core.models.dashboards;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import io.kestra.core.models.annotations.Plugin;
import io.kestra.core.models.dashboards.filters.AbstractFilter;
import io.kestra.core.repositories.QueryBuilderInterface;
import io.kestra.plugin.core.dashboard.data.Executions;
import io.kestra.plugin.core.dashboard.data.Logs;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
Expand All @@ -22,12 +27,18 @@
@NoArgsConstructor
@Plugin
@EqualsAndHashCode
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", visible = true, include = JsonTypeInfo.As.EXISTING_PROPERTY)
@JsonSubTypes({
@JsonSubTypes.Type(value = Executions.class, name = "io.kestra.plugin.core.dashboard.data.Executions"),
@JsonSubTypes.Type(value = Logs.class, name = "io.kestra.plugin.core.dashboard.data.Logs"),
})
public abstract class DataFilter<F extends Enum<F>, C extends ColumnDescriptor<F>> implements io.kestra.core.models.Plugin {
@NotNull
@NotBlank
@Pattern(regexp = "\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*(\\.\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*)*")
private String type;


private Map<String, C> columns;

@Setter
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
package io.kestra.core.models.dashboards.charts;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.kestra.core.models.annotations.Plugin;
import io.kestra.core.models.dashboards.ChartOption;
import io.kestra.core.models.dashboards.DataFilter;
import io.kestra.core.validations.DataChartValidation;
import io.kestra.plugin.core.dashboard.chart.Bar;
import io.kestra.plugin.core.dashboard.chart.Pie;
import io.kestra.plugin.core.dashboard.chart.Table;
import io.kestra.plugin.core.dashboard.chart.TimeSeries;
import jakarta.validation.constraints.NotNull;
import lombok.EqualsAndHashCode;
import lombok.Getter;
Expand All @@ -24,13 +18,6 @@
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@EqualsAndHashCode
@DataChartValidation
//@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
//@JsonSubTypes({
// @JsonSubTypes.Type(value = Bar.class, name = "io.kestra.plugin.core.dashboard.chart.Bar"),
// @JsonSubTypes.Type(value = Pie.class, name = "io.kestra.plugin.core.dashboard.chart.Pie"),
// @JsonSubTypes.Type(value = Table.class, name = "io.kestra.plugin.core.dashboard.chart.Table"),
// @JsonSubTypes.Type(value = TimeSeries.class, name = "io.kestra.plugin.core.dashboard.chart.TimeSeries")
//})
public abstract class DataChart<P extends ChartOption, D extends DataFilter<?, ?>> extends Chart<P> implements io.kestra.core.models.Plugin {
@NotNull
private D data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "CONTAINS")
public class Contains<F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.kestra.core.models.dashboards.filters;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.EqualsAndHashCode;
Expand All @@ -12,6 +13,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "ENDS_WITH")
public class EndsWith <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "EQUAL_TO")
public class EqualTo <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "GREATER_THAN")
public class GreaterThan <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "GREATER_THAN_OR_EQUAL_TO")
public class GreaterThanOrEqualTo <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "IN")
public class In <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.kestra.core.models.dashboards.filters;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -10,6 +11,7 @@
@SuperBuilder
@Getter
@NoArgsConstructor
@Schema(title = "IS_FALSE")
public class IsFalse <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.kestra.core.models.dashboards.filters;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -10,6 +11,7 @@
@SuperBuilder
@Getter
@NoArgsConstructor
@Schema(title = "IS_NOT_NULL")
public class IsNotNull <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.kestra.core.models.dashboards.filters;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -10,6 +11,7 @@
@SuperBuilder
@Getter
@NoArgsConstructor
@Schema(title = "IS_NULL")
public class IsNull <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.kestra.core.models.dashboards.filters;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -10,6 +11,7 @@
@SuperBuilder
@Getter
@NoArgsConstructor
@Schema(title = "IS_TRUE")
public class IsTrue <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "LESS_THAN")
public class LessThan <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "LESS_THAN_OR_EQUAL_TO")
public class LessThanOrEqualTo <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "NOT_EQUAL_TO")
public class NotEqualTo <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "NOT_IN")
public class NotIn <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.annotation.JsonInclude;
import io.kestra.core.validations.OrFilterValidation;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
Expand All @@ -17,6 +18,7 @@
@NoArgsConstructor
@EqualsAndHashCode
@OrFilterValidation
@Schema(title = "OR")
public class Or <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.kestra.core.models.dashboards.filters;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.EqualsAndHashCode;
Expand All @@ -12,6 +13,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "REGEX")
public class Regex <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.kestra.core.models.dashboards.filters;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.EqualsAndHashCode;
Expand All @@ -12,6 +13,7 @@
@Getter
@NoArgsConstructor
@EqualsAndHashCode
@Schema(title = "STARTS_WITH")
public class StartsWith <F extends Enum<F>> extends AbstractFilter<F> {
@NotNull
@JsonInclude
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.kestra.plugin.core.dashboard.data;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;
import io.kestra.core.models.annotations.Plugin;
import io.kestra.core.models.dashboards.ColumnDescriptor;
import io.kestra.core.models.dashboards.DataFilter;
Expand All @@ -9,6 +10,7 @@
import io.kestra.core.repositories.ExecutionRepositoryInterface;
import io.kestra.core.repositories.QueryBuilderInterface;
import io.kestra.core.validations.ExecutionsDataFilterValidation;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -24,6 +26,8 @@
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@EqualsAndHashCode
@ExecutionsDataFilterValidation
@Schema(title = "Executions")
@JsonTypeName("Executions")
public class Executions<C extends ColumnDescriptor<Executions.Fields>> extends DataFilter<Executions.Fields, C> {
@Override
public Class<? extends QueryBuilderInterface<Executions.Fields>> repositoryClass() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.kestra.core.models.dashboards.filters.LessThanOrEqualTo;
import io.kestra.core.repositories.LogRepositoryInterface;
import io.kestra.core.repositories.QueryBuilderInterface;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -26,6 +27,7 @@
@Plugin
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@EqualsAndHashCode
@Schema(title = "Logs")
public class Logs<C extends ColumnDescriptor<Logs.Fields>> extends DataFilter<Logs.Fields, C> {
@Override
public Class<? extends QueryBuilderInterface<Logs.Fields>> repositoryClass() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.kestra.core.models.dashboards.filters.EqualTo;
import io.kestra.core.repositories.MetricRepositoryInterface;
import io.kestra.core.repositories.QueryBuilderInterface;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -23,6 +24,7 @@
@Plugin
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@EqualsAndHashCode
@Schema(title = "Metrics")
public class Metrics<C extends ColumnDescriptor<Metrics.Fields>> extends DataFilter<Metrics.Fields, C> {
@Override
public Class<? extends QueryBuilderInterface<Metrics.Fields>> repositoryClass() {
Expand Down

0 comments on commit c337d55

Please sign in to comment.