Skip to content

Commit

Permalink
dummy save
Browse files Browse the repository at this point in the history
  • Loading branch information
Marc Gorzala committed Jan 6, 2024
1 parent cee8837 commit 68662a6
Show file tree
Hide file tree
Showing 11 changed files with 113 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package net.dancier.kikeriki.adapter.out.persistence.state;

import lombok.RequiredArgsConstructor;
import net.dancier.kikeriki.application.domain.model.state.State;
import net.dancier.kikeriki.application.port.StatePort;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;

import java.util.UUID;


@RequiredArgsConstructor
@Component
public class PostgreSQLStateAdapter implements StatePort {

private final StateJpaRepository stateJpaRepository;

@Override
public State get(UUID dancerId) {
return null;
}

@Override
public void save(State state, String dancerId) {
StateJpaEntity stateJpaEntity = new StateJpaEntity();
stateJpaEntity.setDancer_id(dancerId);
stateJpaEntity.setData(new StateJpaEntity.Data());
stateJpaRepository.save(stateJpaEntity);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package net.dancier.kikeriki.adapter.out.persistence.state;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;

import java.util.UUID;

@Data
@Table(name ="state")
@Entity
public class StateJpaEntity {

@Id
private String dancer_id;

@JdbcTypeCode(SqlTypes.JSON)
@Column(name = "data")
private Data data;


@lombok.Data
public static class Data {

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package net.dancier.kikeriki.adapter.out.persistence.state;

import org.springframework.data.jpa.repository.JpaRepository;

public interface StateJpaRepository
extends JpaRepository<StateJpaEntity, String> {}
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
package net.dancier.kikeriki.application.domain.model.events;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;

@Data
public class MessagePostedEvent {

UUID messageId;
@NotNull
String messageId;

@NotEmpty
List<UUID> recipients;

@NotNull
LocalDateTime createdAd;

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class State {

private Optional<MailMessage> optSentLastMessage = Optional.empty();

public void setLastMessage(@NonNull MailMessage mailMessage) {
public void setLastMailMessage(@NonNull MailMessage mailMessage) {
this.optSentLastMessage = Optional.of(mailMessage);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ public interface StatePort {

State get(UUID dancerId);

void save(State state);
void save(State state, String dancer_id);

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,29 @@
import lombok.RequiredArgsConstructor;
import net.dancier.kikeriki.application.domain.model.events.EmailSendingRequestedEvent;
import net.dancier.kikeriki.application.domain.model.events.MessagePostedEvent;
import net.dancier.kikeriki.application.domain.model.state.State;
import net.dancier.kikeriki.application.domain.model.state.UnreadChatMessage;
import net.dancier.kikeriki.application.port.DancierSendMailPort;
import net.dancier.kikeriki.application.port.StatePort;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.UUID;

@RequiredArgsConstructor
@Component
public class ApplicationEventListeners {

private final StatePort statePort;

public static final Logger log = LoggerFactory.getLogger(ApplicationEventListeners.class);

private final DancierSendMailPort sendMailPort;


@EventListener
public void handle(EmailSendingRequestedEvent event) {
log.info("Handling: {}", event);
Expand All @@ -26,6 +35,14 @@ public void handle(EmailSendingRequestedEvent event) {
@EventListener
public void handle(MessagePostedEvent messagePostedEvent) {
log.info("Handling MessagePostedEvent: " + messagePostedEvent);
State state = new State();

statePort.save(state, UUID.randomUUID().toString());
var unreadChatMessage = UnreadChatMessage.of(messagePostedEvent.getMessageId(),messagePostedEvent.getCreatedAd());
List<UUID> recipients = messagePostedEvent.getRecipients();
for(UUID recipientId : recipients) {
var recipientState = statePort.get(recipientId);
recipientState.addUnreadChatMessage(unreadChatMessage);
}
}
}
2 changes: 2 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ logging:
root: INFO
net.dancier: DEBUG
app:
state-adapter:
stub: false
mail:
host: mail.your-server.de
port: 465
Expand Down
9 changes: 9 additions & 0 deletions src/main/resources/liquibase-changeLog.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,13 @@
</sql>
</changeSet>

<changeSet id="2024-01-06-add-state" author="Marc">
<sql>
CREATE TABLE state (
dancer_id VARCHAR(256) PRIMARY KEY,
data JSONB NOT NULL
);
</sql>
</changeSet>

</databaseChangeLog>
1 change: 0 additions & 1 deletion src/test/java/net/dancier/kikeriki/MailSystemTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ public class MailSystemTest extends AbstractPostgreSQLEnabledTest{
@Autowired
MailOutboxJpaRepository mailOutboxJpaRepository;


@Test
public void test() {
List<MailOutboxJpaEntity> all = mailOutboxJpaRepository.findAll();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ public void testTimeOfLastMailMessage() {

LocalDateTime now = LocalDateTime.now();
MailMessage mailMessage = MailMessage.of(now);
state.setLastMessage(mailMessage);
state.setLastMailMessage(mailMessage);

assertThat(state.getLastTimeMailWasSent()).isNotEmpty();
assertThat(state.getLastTimeMailWasSent().get()).isEqualTo(now);

assertThatThrownBy(() -> {
state.setLastMessage(null);
state.setLastMailMessage(null);
}).isInstanceOf(NullPointerException.class);
}

Expand Down Expand Up @@ -107,7 +107,7 @@ public void allowedToSendAMail() {
assertThat(state.allowedToSendAnotherMail(LocalDate.now())).isTrue();

MailMessage mailMessage = MailMessage.of(LocalDateTime.now());
state.setLastMessage(mailMessage);
state.setLastMailMessage(mailMessage);

assertThat(state.allowedToSendAnotherMail(LocalDate.now())).isFalse();

Expand Down

0 comments on commit 68662a6

Please sign in to comment.