From 7d98f18b2ffc9b87894ef7f0c52abffed412643d Mon Sep 17 00:00:00 2001 From: Tegridy Date: Fri, 23 Oct 2020 17:19:00 +0200 Subject: [PATCH] Added Spring Boot MongoDB sample data initialization --- spring/spring-boot-data-mongodb/pom.xml | 14 ++++++- .../SpringBootDataMongodbApplication.java | 17 +++++++++ .../mongodb/changelogs/DatabaseChangelog.java | 37 +++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 spring/spring-boot-data-mongodb/src/main/java/org/jnosql/demo/endgame/spring/mongodb/changelogs/DatabaseChangelog.java diff --git a/spring/spring-boot-data-mongodb/pom.xml b/spring/spring-boot-data-mongodb/pom.xml index ec3b35d..01acb3f 100644 --- a/spring/spring-boot-data-mongodb/pom.xml +++ b/spring/spring-boot-data-mongodb/pom.xml @@ -50,6 +50,18 @@ spring-boot-devtools true + + + com.github.cloudyrock.mongock + mongock-spring-v5 + 4.1.17 + + + + com.github.cloudyrock.mongock + mongodb-springdata-v3-driver + 4.1.17 + @@ -79,4 +91,4 @@ - \ No newline at end of file + diff --git a/spring/spring-boot-data-mongodb/src/main/java/org/jnosql/demo/endgame/spring/mongodb/SpringBootDataMongodbApplication.java b/spring/spring-boot-data-mongodb/src/main/java/org/jnosql/demo/endgame/spring/mongodb/SpringBootDataMongodbApplication.java index 9b47ba4..45bd3b4 100644 --- a/spring/spring-boot-data-mongodb/src/main/java/org/jnosql/demo/endgame/spring/mongodb/SpringBootDataMongodbApplication.java +++ b/spring/spring-boot-data-mongodb/src/main/java/org/jnosql/demo/endgame/spring/mongodb/SpringBootDataMongodbApplication.java @@ -1,7 +1,12 @@ package org.jnosql.demo.endgame.spring.mongodb; +import com.github.cloudyrock.mongock.driver.mongodb.springdata.v3.SpringDataMongo3Driver; +import com.github.cloudyrock.spring.v5.MongockSpring5; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.data.mongodb.core.MongoTemplate; @SpringBootApplication public class SpringBootDataMongodbApplication { @@ -9,4 +14,16 @@ public class SpringBootDataMongodbApplication { public static void main(String[] args) throws Exception { SpringApplication.run(SpringBootDataMongodbApplication.class, args); } + + @Bean + public MongockSpring5.MongockInitializingBeanRunner mongockInitializingBeanRunner( + ApplicationContext springContext, + MongoTemplate mongoTemplate){ + return MongockSpring5.builder() + .setDriver(SpringDataMongo3Driver + .withDefaultLock(mongoTemplate)) + .addChangeLogsScanPackage("org.jnosql.demo.endgame.spring.mongodb.changelogs") + .setSpringContext(springContext) + .buildInitializingBeanRunner(); + } } diff --git a/spring/spring-boot-data-mongodb/src/main/java/org/jnosql/demo/endgame/spring/mongodb/changelogs/DatabaseChangelog.java b/spring/spring-boot-data-mongodb/src/main/java/org/jnosql/demo/endgame/spring/mongodb/changelogs/DatabaseChangelog.java new file mode 100644 index 0000000..c3381fd --- /dev/null +++ b/spring/spring-boot-data-mongodb/src/main/java/org/jnosql/demo/endgame/spring/mongodb/changelogs/DatabaseChangelog.java @@ -0,0 +1,37 @@ +package org.jnosql.demo.endgame.spring.mongodb.changelogs; + +import com.github.cloudyrock.mongock.ChangeLog; +import com.github.cloudyrock.mongock.ChangeSet; +import com.mongodb.client.MongoDatabase; +import org.bson.Document; +import org.jnosql.demo.endgame.spring.mongodb.model.God; + +import java.util.ArrayList; +import java.util.List; + + +@ChangeLog +public class DatabaseChangelog { + + @ChangeSet(order = "001", id = "insertTestDataToDatabase", author = "Tegridy") + public void initData(MongoDatabase db){ + + List gods = new ArrayList<>(); + gods.add(createMongoDocument(new God("Zeus", "justice"))); + gods.add(createMongoDocument(new God("Hera", "childbirth"))); + gods.add(createMongoDocument(new God("Poseidon", "hurricane"))); + gods.add(createMongoDocument(new God("Demeter", "harvest"))); + gods.add(createMongoDocument(new God("Athena", "wisdom"))); + gods.add(createMongoDocument(new God("Apollo", "light"))); + gods.add(createMongoDocument(new God("John Doe", "no power"))); + gods.add(createMongoDocument(new God("Sally Doe", "no power"))); + + db.getCollection("gods").insertMany(gods); + } + + private Document createMongoDocument(God god) { + return new Document() + .append("name", god.getName()) + .append("power", god.getPower()); + } +}