diff --git a/pom.xml b/pom.xml index 9b00362..1952131 100755 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,11 @@ postgresql runtime + + com.oracle.database.jdbc + ojdbc8 + 19.8.0.0 + org.projectlombok lombok diff --git a/src/main/java/com/example/mmad/testapp/command/UserCommandHandler.java b/src/main/java/com/example/mmad/testapp/command/UserCommandHandler.java index a882cbd..d720cc3 100644 --- a/src/main/java/com/example/mmad/testapp/command/UserCommandHandler.java +++ b/src/main/java/com/example/mmad/testapp/command/UserCommandHandler.java @@ -22,7 +22,7 @@ public class UserCommandHandler { userEntity.setId(createUserCommand.getUserId()); userEntity.setUserName(createUserCommand.getUserName()); userEntity.setEmail(createUserCommand.getEmail()); -// userRepository.save(userEntity); + userRepository.save(userEntity); UserCreatedEvent event = new UserCreatedEvent( userEntity.getId(), userEntity.getUserName(), diff --git a/src/main/java/com/example/mmad/testapp/entity/UserEntity.java b/src/main/java/com/example/mmad/testapp/entity/UserEntity.java index d8fc944..f83f360 100755 --- a/src/main/java/com/example/mmad/testapp/entity/UserEntity.java +++ b/src/main/java/com/example/mmad/testapp/entity/UserEntity.java @@ -8,18 +8,18 @@ import static jakarta.persistence.GenerationType.SEQUENCE; @Entity @Getter @Setter -@Table(schema = "testapp", name = "user") +@Table(schema = "TEST", name = "USERS") @Builder @AllArgsConstructor @NoArgsConstructor public class UserEntity { @Id - @SequenceGenerator(name = "seqTest", sequenceName = "testapp.person_seq", allocationSize = 1) + @SequenceGenerator(name = "seqTest", sequenceName = "USER_SEQ", allocationSize = 1) @GeneratedValue(strategy = SEQUENCE, generator = "seqTest") private Long id; @Column(name = "user_name") private String userName; @Column(name = "email") private String email; -} +} \ No newline at end of file diff --git a/src/main/java/com/example/mmad/testapp/entity/UserQueryEntity.java b/src/main/java/com/example/mmad/testapp/entity/UserQueryEntity.java new file mode 100755 index 0000000..d385af5 --- /dev/null +++ b/src/main/java/com/example/mmad/testapp/entity/UserQueryEntity.java @@ -0,0 +1,26 @@ +package com.example.mmad.testapp.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.*; + +@Entity +@Getter +@Setter +@Table(schema = "TEST", name = "USERS_QUERY") +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UserQueryEntity { + + @Id +// @SequenceGenerator(name = "seqTest", sequenceName = "USER_SEQ", allocationSize = 1) +// @GeneratedValue(strategy = SEQUENCE, generator = "seqTest") + private Long id; + @Column(name = "user_name") + private String userName; + @Column(name = "email") + private String email; +} \ No newline at end of file diff --git a/src/main/java/com/example/mmad/testapp/query/UserQueryHandler.java b/src/main/java/com/example/mmad/testapp/query/UserQueryHandler.java index b523a52..ef5b837 100644 --- a/src/main/java/com/example/mmad/testapp/query/UserQueryHandler.java +++ b/src/main/java/com/example/mmad/testapp/query/UserQueryHandler.java @@ -1,27 +1,34 @@ package com.example.mmad.testapp.query; +import com.example.mmad.testapp.entity.UserQueryEntity; import com.example.mmad.testapp.event.UserCreatedEvent; import com.example.mmad.testapp.kafkaProducerConfig.KafkaProducerConfig; +import com.example.mmad.testapp.repository.UserReadRepository; import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import java.util.List; - @Component public class UserQueryHandler { private static final String kafkaTopic = "user-created"; private final KafkaProducerConfig kafkaProducer; + private final UserReadRepository userReadRepository; - public UserQueryHandler(KafkaProducerConfig kafkaProducer) { + public UserQueryHandler(KafkaProducerConfig kafkaProducer, UserReadRepository userReadRepository) { this.kafkaProducer = kafkaProducer; + this.userReadRepository = userReadRepository; } @Async("taskExecutor") @EventListener public void handelUserCreated(UserCreatedEvent event) { kafkaProducer.kafkaTemplate().send(kafkaTopic, event); - // persist in query data base + UserQueryEntity userQueryEntity = new UserQueryEntity(); + userQueryEntity.setId(event.getUserId()); + userQueryEntity.setUserName(event.getUsername()); + userQueryEntity.setEmail(event.getEmail()); + //TODO mapper needed + userReadRepository.save(userQueryEntity); System.out.println("Received user created event" + event.getUserId()); } } diff --git a/src/main/java/com/example/mmad/testapp/repository/UserReadRepository.java b/src/main/java/com/example/mmad/testapp/repository/UserReadRepository.java index 89bf1fb..984c439 100755 --- a/src/main/java/com/example/mmad/testapp/repository/UserReadRepository.java +++ b/src/main/java/com/example/mmad/testapp/repository/UserReadRepository.java @@ -1,9 +1,9 @@ package com.example.mmad.testapp.repository; -import com.example.mmad.testapp.entity.PersonEntity; +import com.example.mmad.testapp.entity.UserQueryEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface UserReadRepository extends JpaRepository { +public interface UserReadRepository extends JpaRepository { } diff --git a/src/main/resources/db/changelog/changes/oracleLiquibases/liquibase-1.1.xml b/src/main/resources/db/changelog/changes/oracleLiquibases/liquibase-1.1.xml new file mode 100755 index 0000000..c40b4f7 --- /dev/null +++ b/src/main/resources/db/changelog/changes/oracleLiquibases/liquibase-1.1.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db/changelog/changes/oracleLiquibases/liquibase-1.2.xml b/src/main/resources/db/changelog/changes/oracleLiquibases/liquibase-1.2.xml new file mode 100755 index 0000000..4ee5421 --- /dev/null +++ b/src/main/resources/db/changelog/changes/oracleLiquibases/liquibase-1.2.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db/changelog/changes/liquibase-1.1.xml b/src/main/resources/db/changelog/changes/postgresLiquibases/liquibase-1.1.xml similarity index 100% rename from src/main/resources/db/changelog/changes/liquibase-1.1.xml rename to src/main/resources/db/changelog/changes/postgresLiquibases/liquibase-1.1.xml diff --git a/src/main/resources/db/changelog/changes/liquibase-1.2.xml b/src/main/resources/db/changelog/changes/postgresLiquibases/liquibase-1.2.xml similarity index 100% rename from src/main/resources/db/changelog/changes/liquibase-1.2.xml rename to src/main/resources/db/changelog/changes/postgresLiquibases/liquibase-1.2.xml diff --git a/src/main/resources/db/changelog/liquibase-master.xml b/src/main/resources/db/changelog/liquibase-master.xml index 8934557..41ab05c 100755 --- a/src/main/resources/db/changelog/liquibase-master.xml +++ b/src/main/resources/db/changelog/liquibase-master.xml @@ -4,7 +4,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> - - + +