diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/pom.xml b/2022-11/spring-15/spring-data-keyvalue-class-work/pom.xml
new file mode 100644
index 00000000..b2fbb1c3
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+ ru.otus
+ spring-data-keyvalue-class-work
+ 1.0
+
+ pom
+
+
+ spring-data-keyvalue-exercise
+ spring-data-keyvalue-solution
+
+
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/pom.xml b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/pom.xml
new file mode 100644
index 00000000..180b1a60
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/pom.xml
@@ -0,0 +1,43 @@
+
+
+ 4.0.0
+
+ ru.otus
+ spring-data-keyvalue-exercise
+ 1.0-SNAPSHOT
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.2.1.RELEASE
+
+
+
+
+ 11
+ 11
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/Main.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/Main.java
new file mode 100644
index 00000000..d0d34e97
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/Main.java
@@ -0,0 +1,29 @@
+package ru.otus.spring;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.data.map.repository.config.EnableMapRepositories;
+import ru.otus.spring.domain.Person;
+import ru.otus.spring.repostory.PersonRepository;
+
+import javax.annotation.PostConstruct;
+
+@SpringBootApplication
+public class Main {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Main.class);
+ }
+
+ @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection")
+ @Autowired
+ private PersonRepository repository;
+
+ @PostConstruct
+ public void init() {
+ repository.save(new Person(1, "Pushkin"));
+
+ repository.findAll();
+ }
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/domain/Email.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/domain/Email.java
new file mode 100644
index 00000000..c1e24a7d
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/domain/Email.java
@@ -0,0 +1,25 @@
+package ru.otus.spring.domain;
+
+public class Email {
+
+ private int id;
+
+ private String email;
+
+ public Email(String email) {
+ this.email = email;
+ }
+
+ public Email(int id, String email) {
+ this.id = id;
+ this.email = email;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/domain/Person.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/domain/Person.java
new file mode 100644
index 00000000..f707e14e
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/domain/Person.java
@@ -0,0 +1,35 @@
+package ru.otus.spring.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.keyvalue.annotation.KeySpace;
+
+public class Person {
+
+ private int id;
+ private String name;
+
+ public Person(String name) {
+ this.name = name;
+ }
+
+ public Person(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/repostory/PersonRepository.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/repostory/PersonRepository.java
new file mode 100644
index 00000000..4b20e5b7
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-exercise/src/main/java/ru/otus/spring/repostory/PersonRepository.java
@@ -0,0 +1,11 @@
+package ru.otus.spring.repostory;
+
+import org.springframework.data.repository.CrudRepository;
+import ru.otus.spring.domain.Person;
+
+import java.util.List;
+
+public interface PersonRepository extends CrudRepository {
+
+ List findAll();
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/pom.xml b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/pom.xml
new file mode 100644
index 00000000..7d0041e8
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/pom.xml
@@ -0,0 +1,43 @@
+
+
+ 4.0.0
+
+ ru.otus
+ spring-data-keyvalue-solution
+ 1.0-SNAPSHOT
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.2.1.RELEASE
+
+
+
+
+ 11
+ 11
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.data
+ spring-data-keyvalue
+ 2.2.1.RELEASE
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/Main.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/Main.java
new file mode 100644
index 00000000..42d9078f
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/Main.java
@@ -0,0 +1,39 @@
+package ru.otus.spring;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.data.map.repository.config.EnableMapRepositories;
+import ru.otus.spring.domain.Email;
+import ru.otus.spring.domain.Person;
+import ru.otus.spring.repostory.EmailRepository;
+import ru.otus.spring.repostory.PersonRepository;
+
+import javax.annotation.PostConstruct;
+
+@SpringBootApplication
+@EnableMapRepositories
+public class Main {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Main.class);
+ }
+
+ @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection")
+ @Autowired
+ private PersonRepository repository;
+
+ @Autowired
+ private EmailRepository emailRepository;
+
+ @PostConstruct
+ public void init() {
+ repository.save(new Person(1, "Pushkin"));
+ repository.save(new Person(2, "Lermontov"));
+ System.out.println(repository.findAll());
+
+ emailRepository.save(new Email(1, "alex@pushkin.com"));
+ emailRepository.save(new Email(2, "micha@pushkin.com"));
+ System.out.println(emailRepository.findAll());
+ }
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/domain/Email.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/domain/Email.java
new file mode 100644
index 00000000..86ddb0c1
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/domain/Email.java
@@ -0,0 +1,37 @@
+package ru.otus.spring.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.keyvalue.annotation.KeySpace;
+
+@KeySpace("email")
+public class Email {
+ @Id
+ private int id;
+
+ private String email;
+
+ public Email(int id, String email) {
+ this.id = id;
+ this.email = email;
+ }
+
+ public Email(String email) {
+ this.email = email;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ @Override
+ public String toString() {
+ return "Email{" +
+ "id=" + id +
+ ", email='" + email + '\'' +
+ '}';
+ }
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/domain/Person.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/domain/Person.java
new file mode 100644
index 00000000..b0181bd1
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/domain/Person.java
@@ -0,0 +1,45 @@
+package ru.otus.spring.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.keyvalue.annotation.KeySpace;
+
+@KeySpace("person")
+public class Person {
+
+ @Id
+ private int id;
+ private String name;
+
+ public Person(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public Person(String name) {
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Person{" +
+ "id=" + id +
+ ", name='" + name + '\'' +
+ '}';
+ }
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/EmailRepository.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/EmailRepository.java
new file mode 100644
index 00000000..6ce870a2
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/EmailRepository.java
@@ -0,0 +1,14 @@
+package ru.otus.spring.repostory;
+
+import org.springframework.data.keyvalue.repository.KeyValueRepository;
+import org.springframework.stereotype.Repository;
+import ru.otus.spring.domain.Email;
+import ru.otus.spring.domain.Person;
+
+import java.util.List;
+
+public interface EmailRepository {
+
+ List findAll();
+ Email save(Email email);
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/EmailRepositoryImpl.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/EmailRepositoryImpl.java
new file mode 100644
index 00000000..e2aa75a1
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/EmailRepositoryImpl.java
@@ -0,0 +1,27 @@
+package ru.otus.spring.repostory;
+
+import org.springframework.data.keyvalue.core.KeyValueOperations;
+import org.springframework.stereotype.Repository;
+import ru.otus.spring.domain.Email;
+
+import java.util.List;
+
+@Repository
+public class EmailRepositoryImpl implements EmailRepository {
+
+ final private KeyValueOperations keyValueTemplate;
+
+ public EmailRepositoryImpl(KeyValueOperations keyValueTemplate) {
+ this.keyValueTemplate = keyValueTemplate;
+ }
+
+ @Override
+ public List findAll() {
+ return (List) keyValueTemplate.findAll(Email.class);
+ }
+
+ @Override
+ public Email save(Email email) {
+ return keyValueTemplate.insert(email);
+ }
+}
diff --git a/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/PersonRepository.java b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/PersonRepository.java
new file mode 100644
index 00000000..99a93c24
--- /dev/null
+++ b/2022-11/spring-15/spring-data-keyvalue-class-work/spring-data-keyvalue-solution/src/main/java/ru/otus/spring/repostory/PersonRepository.java
@@ -0,0 +1,12 @@
+package ru.otus.spring.repostory;
+
+import org.springframework.data.keyvalue.repository.KeyValueRepository;
+import org.springframework.data.repository.CrudRepository;
+import ru.otus.spring.domain.Person;
+
+import java.util.List;
+
+public interface PersonRepository extends KeyValueRepository {
+
+ List findAll();
+}
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/pom.xml b/2022-11/spring-15/spring-data-mongo-class-work/pom.xml
new file mode 100644
index 00000000..a13c15b7
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+ ru.otus
+ spring-data-mongo-class-work
+ 1.0
+
+ pom
+
+
+ spring-data-mongo-exercise
+ spring-data-mongo-solution
+
+
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/pom.xml b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/pom.xml
new file mode 100644
index 00000000..5cb9d0e1
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/pom.xml
@@ -0,0 +1,46 @@
+
+
+ 4.0.0
+
+ ru.otus
+ spring-data-mongo-exercise
+ 1.0-SNAPSHOT
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.3.4.RELEASE
+
+
+
+
+ 11
+ 11
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-data-mongodb
+
+
+ de.flapdoodle.embed
+ de.flapdoodle.embed.mongo
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/Main.java b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/Main.java
new file mode 100644
index 00000000..d67d7972
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/Main.java
@@ -0,0 +1,31 @@
+package ru.otus.spring;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+import ru.otus.spring.domain.Person;
+import ru.otus.spring.repostory.PersonRepository;
+
+@SpringBootApplication
+public class Main {
+
+ @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection")
+ @Autowired
+ private PersonRepository repository;
+
+ public static void main(String[] args) throws InterruptedException {
+ ApplicationContext context = SpringApplication.run(Main.class);
+
+ PersonRepository repository = context.getBean(PersonRepository.class);
+
+ repository.save(new Person("Dostoevsky"));
+
+ Thread.sleep(3000);
+
+ System.out.println("\n\n\n----------------------------------------------\n\n");
+ System.out.println("Авторы в БД:");
+ repository.findAll().forEach(p -> System.out.println(p.getName()));
+ System.out.println("\n\n----------------------------------------------\n\n\n");
+ }
+}
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/domain/Person.java b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/domain/Person.java
new file mode 100644
index 00000000..2bdc3894
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/domain/Person.java
@@ -0,0 +1,27 @@
+package ru.otus.spring.domain;
+
+public class Person {
+
+ private String id;
+ private String name;
+
+ public Person(String name) {
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/repostory/PersonRepository.java b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/repostory/PersonRepository.java
new file mode 100644
index 00000000..763a2288
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/java/ru/otus/spring/repostory/PersonRepository.java
@@ -0,0 +1,12 @@
+package ru.otus.spring.repostory;
+
+import org.springframework.data.repository.CrudRepository;
+import ru.otus.spring.domain.Person;
+
+import java.util.List;
+
+
+public interface PersonRepository extends CrudRepository {
+
+ List findAll();
+}
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/resources/application.yml b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/resources/application.yml
new file mode 100644
index 00000000..9bffd5dc
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-exercise/src/main/resources/application.yml
@@ -0,0 +1,4 @@
+spring:
+ data:
+ mongodb:
+ database: company
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/pom.xml b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/pom.xml
new file mode 100644
index 00000000..6045db5d
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/pom.xml
@@ -0,0 +1,61 @@
+
+
+ 4.0.0
+
+ ru.otus
+ spring-data-mongo-solution
+ 1.0-SNAPSHOT
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.3.4.RELEASE
+
+
+
+
+ 11
+ 11
+ 4.1.17
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-data-mongodb
+
+
+ de.flapdoodle.embed
+ de.flapdoodle.embed.mongo
+
+
+
+ com.github.cloudyrock.mongock
+ mongock-spring-v5
+ ${mongock.version}
+
+
+
+ com.github.cloudyrock.mongock
+ mongodb-springdata-v3-driver
+ ${mongock.version}
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/Main.java b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/Main.java
new file mode 100644
index 00000000..fb0e8a60
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/Main.java
@@ -0,0 +1,35 @@
+package ru.otus.spring;
+
+import com.github.cloudyrock.spring.v5.EnableMongock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+import ru.otus.spring.domain.Person;
+import ru.otus.spring.repostory.PersonRepository;
+
+@EnableMongock
+@EnableMongoRepositories
+@SpringBootApplication
+public class Main {
+
+ @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection")
+ @Autowired
+ private PersonRepository repository;
+
+ public static void main(String[] args) throws InterruptedException {
+ ApplicationContext context = SpringApplication.run(Main.class);
+
+ PersonRepository repository = context.getBean(PersonRepository.class);
+
+ repository.save(new Person("Dostoevsky"));
+
+ Thread.sleep(3000);
+
+ System.out.println("\n\n\n----------------------------------------------\n\n");
+ System.out.println("Авторы в БД:");
+ repository.findAll().forEach(p -> System.out.println(p.getName()));
+ System.out.println("\n\n----------------------------------------------\n\n\n");
+ }
+}
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/domain/Person.java b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/domain/Person.java
new file mode 100644
index 00000000..12cf6355
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/domain/Person.java
@@ -0,0 +1,32 @@
+package ru.otus.spring.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "persons")
+public class Person {
+
+ @Id
+ private String id;
+ private String name;
+
+ public Person(String name) {
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/mongock/changelog/DatabaseChangelog.java b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/mongock/changelog/DatabaseChangelog.java
new file mode 100644
index 00000000..f9226e50
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/mongock/changelog/DatabaseChangelog.java
@@ -0,0 +1,30 @@
+package ru.otus.spring.mongock.changelog;
+
+import com.github.cloudyrock.mongock.ChangeLog;
+import com.github.cloudyrock.mongock.ChangeSet;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoDatabase;
+import org.bson.Document;
+import ru.otus.spring.domain.Person;
+import ru.otus.spring.repostory.PersonRepository;
+
+@ChangeLog
+public class DatabaseChangelog {
+
+ @ChangeSet(order = "001", id = "dropDb", author = "stvort", runAlways = true)
+ public void dropDb(MongoDatabase db) {
+ db.drop();
+ }
+
+ @ChangeSet(order = "002", id = "insertLermontov", author = "ydvorzhetskiy")
+ public void insertLermontov(MongoDatabase db) {
+ MongoCollection myCollection = db.getCollection("persons");
+ var doc = new Document().append("name", "Lermontov");
+ myCollection.insertOne(doc);
+ }
+
+ @ChangeSet(order = "003", id = "insertPushkin", author = "stvort")
+ public void insertPushkin(PersonRepository repository) {
+ repository.save(new Person("Pushkin"));
+ }
+}
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/repostory/PersonRepository.java b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/repostory/PersonRepository.java
new file mode 100644
index 00000000..763a2288
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/java/ru/otus/spring/repostory/PersonRepository.java
@@ -0,0 +1,12 @@
+package ru.otus.spring.repostory;
+
+import org.springframework.data.repository.CrudRepository;
+import ru.otus.spring.domain.Person;
+
+import java.util.List;
+
+
+public interface PersonRepository extends CrudRepository {
+
+ List findAll();
+}
diff --git a/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/resources/application.yml b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/resources/application.yml
new file mode 100644
index 00000000..dd00fa36
--- /dev/null
+++ b/2022-11/spring-15/spring-data-mongo-class-work/spring-data-mongo-solution/src/main/resources/application.yml
@@ -0,0 +1,10 @@
+spring:
+ data:
+ mongodb:
+ database: company
+
+mongock:
+ runner-type: "ApplicationRunner" # default
+ #runner-type: "InitializingBean"
+ change-logs-scan-package:
+ - ru.otus.spring.mongock.changelog