From d3711a06f46e814807c0b0f3a2c5a9589bc49744 Mon Sep 17 00:00:00 2001 From: pratyush Date: Wed, 4 Mar 2026 19:52:31 +0000 Subject: [PATCH] Rename project resources to `veloflow`, optimize workflow fetching with steps, enable response compression, and add database indexing --- ...ml => veloflow-service-configmap-dev.yaml} | 2 +- ...yaml => veloflow-service-secrets-dev.yaml} | 2 +- ...l => veloflow-service-configmap-prod.yaml} | 2 +- ...aml => veloflow-service-secrets-prod.yaml} | 2 +- .../pkay/simpleWf/core/data/model/Task.java | 5 +++- .../core/data/model/WorkflowInstance.java | 4 ++- .../data/repository/WorkflowRepository.java | 6 +++++ .../core/service/WorkflowInstanceService.java | 3 ++- .../core/service/WorkflowService.java | 26 +++++++++++-------- src/main/resources/application.yml | 5 ++++ 10 files changed, 39 insertions(+), 18 deletions(-) rename configmap/dev/{simple-workflow-service-configmap-dev.yaml => veloflow-service-configmap-dev.yaml} (77%) rename configmap/dev/{simple-workflow-service-secrets-dev.yaml => veloflow-service-secrets-dev.yaml} (66%) rename configmap/prod/{simple-workflow-service-configmap-prod.yaml => veloflow-service-configmap-prod.yaml} (77%) rename configmap/prod/{simple-workflow-service-secrets-prod.yaml => veloflow-service-secrets-prod.yaml} (66%) 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 c894dbd..bba7f4e 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 2e035ab..ad5fd1c 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 48e3d48..db92865 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 435aef7..2507238 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 22bc16a..56a2333 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 9fc303c..59b0e60 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 3fd093b..8707a28 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 a2dd0bb..1139b12 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 f9435b1..9640d88 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 fdba291..f9a0a64 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} -- GitLab