diff --git a/configmap/dev/simple-workflow-service-configmap-dev.yaml b/configmap/dev/veloflow-service-configmap-dev.yaml similarity index 77% rename from configmap/dev/simple-workflow-service-configmap-dev.yaml rename to configmap/dev/veloflow-service-configmap-dev.yaml index c894dbd0f7c9ce24e759a984924337f792387e97..bba7f4e486654223d7efb0d3b38a579ca5355930 100644 --- a/configmap/dev/simple-workflow-service-configmap-dev.yaml +++ b/configmap/dev/veloflow-service-configmap-dev.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: ConfigMap metadata: - name: simple-workflow-service-configmap-dev + name: veloflow-service-configmap-dev data: APP_ENV: dev DB_URL: jdbc:mariadb://192.168.1.206:3306/c10_wrk_flw_v1 diff --git a/configmap/dev/simple-workflow-service-secrets-dev.yaml b/configmap/dev/veloflow-service-secrets-dev.yaml similarity index 66% rename from configmap/dev/simple-workflow-service-secrets-dev.yaml rename to configmap/dev/veloflow-service-secrets-dev.yaml index 2e035aba6654458157cf3bc90afd1e1c34582d76..ad5fd1c6d5a22e2a924c2885ea34771d9e35d07a 100644 --- a/configmap/dev/simple-workflow-service-secrets-dev.yaml +++ b/configmap/dev/veloflow-service-secrets-dev.yaml @@ -1,6 +1,6 @@ apiVersion: v1 kind: Secret metadata: - name: simple-workflow-service-secrets-dev + name: veloflow-service-secrets-dev stringData: DB_PASSWORD: v9UTsNgj!pEAy73@JYUdibm diff --git a/configmap/prod/simple-workflow-service-configmap-prod.yaml b/configmap/prod/veloflow-service-configmap-prod.yaml similarity index 77% rename from configmap/prod/simple-workflow-service-configmap-prod.yaml rename to configmap/prod/veloflow-service-configmap-prod.yaml index 48e3d4871ede383b8c86db4bc112116ffed85f6f..db928650f04452b2cec3381927278690498f36f2 100644 --- a/configmap/prod/simple-workflow-service-configmap-prod.yaml +++ b/configmap/prod/veloflow-service-configmap-prod.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: ConfigMap metadata: - name: simple-workflow-service-configmap-prod + name: veloflow-service-configmap-prod data: APP_ENV: prod DB_URL: jdbc:mariadb://192.168.1.206:3306/c3_wrk_flw_v1 diff --git a/configmap/prod/simple-workflow-service-secrets-prod.yaml b/configmap/prod/veloflow-service-secrets-prod.yaml similarity index 66% rename from configmap/prod/simple-workflow-service-secrets-prod.yaml rename to configmap/prod/veloflow-service-secrets-prod.yaml index 435aef74f5180a837c7ebdd43c978ad5a9cc9b3f..250723877d389bad6e49d704d70e9c977458b61c 100644 --- a/configmap/prod/simple-workflow-service-secrets-prod.yaml +++ b/configmap/prod/veloflow-service-secrets-prod.yaml @@ -1,6 +1,6 @@ apiVersion: v1 kind: Secret metadata: - name: simple-workflow-service-secrets-prod + name: veloflow-service-secrets-prod stringData: DB_PASSWORD: ijDFnaP4dG!ALQwM5npty3@A \ No newline at end of file diff --git a/src/main/java/xyz/pkay/simpleWf/core/data/model/Task.java b/src/main/java/xyz/pkay/simpleWf/core/data/model/Task.java index 22bc16ab5ee1eca68c0a4e2ef4f5df7a202308aa..56a23338ef3de4af80fabdbc805f3cccb9c2f652 100644 --- a/src/main/java/xyz/pkay/simpleWf/core/data/model/Task.java +++ b/src/main/java/xyz/pkay/simpleWf/core/data/model/Task.java @@ -7,7 +7,10 @@ import lombok.Setter; import java.time.LocalDateTime; @Entity -@Table(name = "tasks") +@Table(name = "tasks", indexes = { + @Index(name = "idx_tasks_workflow_instance_id", columnList = "workflow_instance_id"), + @Index(name = "idx_tasks_pid", columnList = "pid") +}) @Getter @Setter public class Task { diff --git a/src/main/java/xyz/pkay/simpleWf/core/data/model/WorkflowInstance.java b/src/main/java/xyz/pkay/simpleWf/core/data/model/WorkflowInstance.java index 9fc303c52ebddd52c240d1621a6a617f8dbf09a5..59b0e60e27598d8d8b91d3b37d055d8c736e7088 100644 --- a/src/main/java/xyz/pkay/simpleWf/core/data/model/WorkflowInstance.java +++ b/src/main/java/xyz/pkay/simpleWf/core/data/model/WorkflowInstance.java @@ -12,7 +12,9 @@ import java.util.HashMap; import java.util.List; @Entity -@Table(name = "workflow_instances") +@Table(name = "workflow_instances", indexes = { + @Index(name = "idx_workflow_instances_workflow_id", columnList = "workflow_id") +}) @Getter @Setter public class WorkflowInstance { diff --git a/src/main/java/xyz/pkay/simpleWf/core/data/repository/WorkflowRepository.java b/src/main/java/xyz/pkay/simpleWf/core/data/repository/WorkflowRepository.java index 3fd093b4ea06ec98c59612cec9da99f24e5f1986..8707a28a37d2f8e3f8721db3aad665fa431e7308 100644 --- a/src/main/java/xyz/pkay/simpleWf/core/data/repository/WorkflowRepository.java +++ b/src/main/java/xyz/pkay/simpleWf/core/data/repository/WorkflowRepository.java @@ -1,11 +1,17 @@ package xyz.pkay.simpleWf.core.data.repository; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import xyz.pkay.simpleWf.core.data.model.Workflow; +import java.util.Optional; import java.util.UUID; @Repository public interface WorkflowRepository extends JpaRepository { + + @Query("SELECT w FROM Workflow w LEFT JOIN FETCH w.steps WHERE w.id = :id") + Optional findByIdWithSteps(@Param("id") UUID id); } \ No newline at end of file diff --git a/src/main/java/xyz/pkay/simpleWf/core/service/WorkflowInstanceService.java b/src/main/java/xyz/pkay/simpleWf/core/service/WorkflowInstanceService.java index a2dd0bb24e2925b786aab0a46ed281e7d2abf3ee..1139b121318aadcc724f81547b3648b6991b4bc7 100644 --- a/src/main/java/xyz/pkay/simpleWf/core/service/WorkflowInstanceService.java +++ b/src/main/java/xyz/pkay/simpleWf/core/service/WorkflowInstanceService.java @@ -23,8 +23,9 @@ public class WorkflowInstanceService { private final WorkflowService workflowService; + @Transactional public WorkflowInstance createInstance(UUID workflowId) { - Workflow workflow = workflowService.getWorkflowById(workflowId); + Workflow workflow = workflowService.getWorkflowWithStepsById(workflowId); WorkflowInstance instance = createInstance(workflow); diff --git a/src/main/java/xyz/pkay/simpleWf/core/service/WorkflowService.java b/src/main/java/xyz/pkay/simpleWf/core/service/WorkflowService.java index f9435b171320e42efd8eea02d2a1414fdb06e15f..9640d88734a779d105a235b63b77f8bac2268e61 100644 --- a/src/main/java/xyz/pkay/simpleWf/core/service/WorkflowService.java +++ b/src/main/java/xyz/pkay/simpleWf/core/service/WorkflowService.java @@ -12,16 +12,16 @@ import java.util.UUID; @Service @RequiredArgsConstructor public class WorkflowService { - + private final WorkflowRepository repository; - - + + @Transactional public Workflow createWorkflow(Workflow workflow) { return repository.save(workflow); } - - + + @Transactional public void deleteWorkflow(UUID id) { if (!repository.existsById(id)) { @@ -29,20 +29,24 @@ public class WorkflowService { } repository.deleteById(id); } - + public List getAllWorkflows() { return repository.findAll(); } - - + + public Workflow getWorkflowById(UUID id) { return repository.findById(id).orElseThrow(() -> new RuntimeException("Workflow not found with id: " + id)); } - + + public Workflow getWorkflowWithStepsById(UUID id) { + return repository.findByIdWithSteps(id).orElseThrow(() -> new RuntimeException("Workflow not found with id: " + id)); + } + @Transactional public Workflow updateWorkflow(UUID id, Workflow workflow) { Workflow existingWorkflow = repository.findById(id).orElseThrow(() -> new RuntimeException("Workflow not found with id: " + id)); - + existingWorkflow.setName(workflow.getName()); existingWorkflow.setStatus(workflow.getStatus()); if (workflow.getSteps() != null) { @@ -53,7 +57,7 @@ public class WorkflowService { existingWorkflow.getTransitions().clear(); existingWorkflow.getTransitions().addAll(workflow.getTransitions().stream().peek(t -> t.setWorkflow(existingWorkflow)).toList()); } - + return repository.save(existingWorkflow); } } \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index fdba291efc07fb8813ee5e916f80c03b81fb9cd1..f9a0a6444e8c7d56ef8f2d8f92cad86822ad63b9 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,8 @@ +server: + compression: + enabled: true + mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml + min-response-size: 1024 spring: datasource: url: ${DB_URL}