From 3412c76cef25dc1c02ee3da49c068df8ad137b9a Mon Sep 17 00:00:00 2001 From: Valentin Laurin Date: Sat, 19 Jul 2025 14:37:20 +0100 Subject: [PATCH] Add model for definition workflow --- .../sdk/spring/definition/model/Action.java | 40 +++++++++++++++++++ .../spring/definition/model/CreateAction.java | 23 +++++++++++ .../spring/definition/model/RecordType.java | 3 +- .../sdk/spring/definition/model/State.java | 19 +++++++++ .../sdk/spring/definition/model/Webhook.java | 15 +++++++ .../sdk/spring/definition/model/Workflow.java | 15 +++++++ 6 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 src/main/java/app/quickcase/sdk/spring/definition/model/Action.java create mode 100644 src/main/java/app/quickcase/sdk/spring/definition/model/CreateAction.java create mode 100644 src/main/java/app/quickcase/sdk/spring/definition/model/State.java create mode 100644 src/main/java/app/quickcase/sdk/spring/definition/model/Webhook.java create mode 100644 src/main/java/app/quickcase/sdk/spring/definition/model/Workflow.java diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/Action.java b/src/main/java/app/quickcase/sdk/spring/definition/model/Action.java new file mode 100644 index 0000000..4eeacba --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/Action.java @@ -0,0 +1,40 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record Action( + @NonNull String id, + @NonNull String name, + String label, + String description, + Integer order, + @Singular Set fromStates, + String precondition, + String toState, + @Singular List postconditions, + @NonNull @Singular("acl") Map acl, + @NonNull String classification, + Webhooks webhooks +) { + @Builder + public record Postcondition( + @NonNull String path, + @NonNull String value + ) { + } + + @Builder + public record Webhooks( + @NonNull Webhook onStart, + @NonNull Webhook onSubmit, + @NonNull Webhook onSubmitted + ) { + } +} diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/CreateAction.java b/src/main/java/app/quickcase/sdk/spring/definition/model/CreateAction.java new file mode 100644 index 0000000..a276f9d --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/CreateAction.java @@ -0,0 +1,23 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.util.List; +import java.util.Map; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record CreateAction( + @NonNull String id, + @NonNull String name, + String label, + String description, + Integer order, + @NonNull String toState, + @Singular List postconditions, + @NonNull @Singular("acl") Map acl, + @NonNull String classification, + Action.Webhooks webhooks +) { +} diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/RecordType.java b/src/main/java/app/quickcase/sdk/spring/definition/model/RecordType.java index 46187aa..4f4b2a3 100644 --- a/src/main/java/app/quickcase/sdk/spring/definition/model/RecordType.java +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/RecordType.java @@ -5,6 +5,7 @@ @Builder public record RecordType( - @NonNull Schema schema + @NonNull Schema schema, + @NonNull Workflow workflow ) { } diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/State.java b/src/main/java/app/quickcase/sdk/spring/definition/model/State.java new file mode 100644 index 0000000..87443f6 --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/State.java @@ -0,0 +1,19 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.util.Map; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record State( + @NonNull String id, + @NonNull String name, + String label, + String description, + String titleTemplate, + Integer order, + @NonNull @Singular("acl") Map acl +) { +} diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/Webhook.java b/src/main/java/app/quickcase/sdk/spring/definition/model/Webhook.java new file mode 100644 index 0000000..d677491 --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/Webhook.java @@ -0,0 +1,15 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.net.URL; +import java.util.List; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record Webhook( + @NonNull URL url, + @Singular @NonNull List retries +) { +} diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/Workflow.java b/src/main/java/app/quickcase/sdk/spring/definition/model/Workflow.java new file mode 100644 index 0000000..728fea8 --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/Workflow.java @@ -0,0 +1,15 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.util.Map; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record Workflow( + @NonNull @Singular Map states, + @NonNull @Singular Map createActions, + @NonNull @Singular Map actions +) { +}