From bd988b56be682a35bb42212fa2cd226994cfd9c2 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 17 Jan 2025 17:29:26 +0100 Subject: [PATCH] OZG-7515 implement migration to add Bescheid item name to command --- ...ameBescheidToPatchAttachedItemCommand.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/migration/M014_AddItemNameBescheidToPatchAttachedItemCommand.java diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/migration/M014_AddItemNameBescheidToPatchAttachedItemCommand.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/migration/M014_AddItemNameBescheidToPatchAttachedItemCommand.java new file mode 100644 index 000000000..d08eaeb1b --- /dev/null +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/migration/M014_AddItemNameBescheidToPatchAttachedItemCommand.java @@ -0,0 +1,49 @@ +package de.ozgcloud.vorgang.common.migration; + +import java.util.List; + +import org.bson.Document; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; + +import de.ozgcloud.command.Command; +import io.mongock.api.annotations.ChangeUnit; +import io.mongock.api.annotations.Execution; +import io.mongock.api.annotations.RollbackExecution; + +@ChangeUnit(id = "2025-01-17 16:00:00 OZG-7515", order = "M014", author = "freichenbach", runAlways = true) +public class M014_AddItemNameBescheidToPatchAttachedItemCommand { // NOSONAR + + private static final String ORDER_FIELD = "order"; + private static final String SEND_BESCHEID_ORDER = "SEND_BESCHEID"; + private static final String PARENT_ID_FIELD = "bodyObject.parentId"; + private static final String PATCH_ATTACHED_ITEM_ORDER = "PATCH_ATTACHED_ITEM"; + private static final String ITEM_NAME_FILED = "bodyObject.itemName"; + private static final String BESCHEID_ITEM_NAME = "Bescheid"; + + @Execution + public void doMigration(MongoTemplate template) { + var parentIds = getSendBescheidCommandIds(template); + template.aggregate(buildAggregationPipeline(parentIds), Command.COLLECTION_NAME, Document.class); + } + + List<String> getSendBescheidCommandIds(MongoTemplate template) { + var commands = template.find(Query.query(Criteria.where(ORDER_FIELD).is(SEND_BESCHEID_ORDER)), Command.class); + return commands.stream().map(Command::getId).toList(); + } + + private Aggregation buildAggregationPipeline(List<String> parentIds) { + var matchingCriteria = new Criteria().andOperator(Criteria.where(PARENT_ID_FIELD).in(parentIds), + Criteria.where(ORDER_FIELD).is(PATCH_ATTACHED_ITEM_ORDER), + Criteria.where(ITEM_NAME_FILED).exists(false)); + return Aggregation.newAggregation(Aggregation.match(matchingCriteria), + Aggregation.addFields().addFieldWithValue(ITEM_NAME_FILED, BESCHEID_ITEM_NAME).build()); + } + + @RollbackExecution + public void rollback() { + // kein rollback implementiert + } +} \ No newline at end of file -- GitLab