Skip to content
Snippets Groups Projects
Commit bd988b56 authored by Felix Reichenbach's avatar Felix Reichenbach
Browse files

OZG-7515 implement migration to add Bescheid item name to command

parent 9a652a4c
No related branches found
No related tags found
1 merge request!11Ozg 7515 migrate patch item command
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment