diff --git a/src/main/java/de/ozgcloud/admin/migration/M001_CreateEmptyPostfachIfMissing.java b/src/main/java/de/ozgcloud/admin/migration/M001_CreateEmptyPostfachIfMissing.java index ba8c8aced8b1d2bf25bd3bd39d8e5c6c18799520..c8c1829b1ab83fbf7af3284294ec8f980a498206 100644 --- a/src/main/java/de/ozgcloud/admin/migration/M001_CreateEmptyPostfachIfMissing.java +++ b/src/main/java/de/ozgcloud/admin/migration/M001_CreateEmptyPostfachIfMissing.java @@ -3,19 +3,53 @@ package de.ozgcloud.admin.migration; import io.mongock.api.annotations.ChangeUnit; import io.mongock.api.annotations.Execution; import io.mongock.api.annotations.RollbackExecution; +import org.bson.Document; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; + @ChangeUnit(id = "2024-02-20 17:00:00 OZG-4948-OZG-5058", order = "M001", author = "lmonnerjahn", runAlways = true) -public class M001_CreateEmptyPostfachIfMissing { +public class M001_CreateEmptyPostfachIfMissing { // NOSONAR private static final String SETTINGS_COLLECTION = "settings"; - static final String NAME_KEY = "name"; - static final String POSTFACH_NAME = "Postfach"; + static final String TYPE_NAME_KEY = "name"; + static final String TYPE_NAME_POSTFACH_VALUE = "Postfach"; + public static final String SETTINGS_KEY = "settings"; + public static final String POSTFACH_ABSENDER_KEY = "absender"; + public static final String POSTFACH_SIGNATUR_KEY = "signatur"; + public static final String ABSENDER_NAME_KEY = "name"; + public static final String ABSENDER_ANSCHRIFT_KEY = "anschrift"; + public static final String ABSENDER_DIENST_KEY = "dienst"; + public static final String ABSENDER_MANDANT_KEY = "mandant"; + public static final String ABSENDER_GEMEINDESCHLUESSEL_KEY = "gemeindeschluessel"; + public static final String SIGNATUR_TEXT_KEY = "text"; @Execution public void doMigration(MongoTemplate template) { - // todo: check if settings collection contains a "postfach" object - // add a postfach object if it is missing + var criteria = Criteria.where(TYPE_NAME_KEY).is(TYPE_NAME_POSTFACH_VALUE); + var query = new Query(criteria); + if(template.find(query, Document.class, SETTINGS_COLLECTION).isEmpty()) { + template.save(emptyPostfachSetting(), SETTINGS_COLLECTION); + } + } + + private Document emptyPostfachSetting(){ + var setting = new Document(); + var postfach = new Document(); + var absender = new Document(); + var signatur = new Document(); + signatur.put(SIGNATUR_TEXT_KEY, ""); + absender.put(ABSENDER_NAME_KEY, ""); + absender.put(ABSENDER_ANSCHRIFT_KEY, ""); + absender.put(ABSENDER_DIENST_KEY, ""); + absender.put(ABSENDER_MANDANT_KEY, ""); + absender.put(ABSENDER_GEMEINDESCHLUESSEL_KEY, ""); + postfach.put(POSTFACH_ABSENDER_KEY, absender); + postfach.put(POSTFACH_SIGNATUR_KEY, signatur); + setting.put(TYPE_NAME_KEY, TYPE_NAME_POSTFACH_VALUE); + setting.put(SETTINGS_KEY, postfach); + return setting; } @RollbackExecution