refactor(core): reorganize code and implement logging
This commit is contained in:
@@ -5,20 +5,47 @@ import com.pablotj.restemailbridge.application.port.EmailConfigurationPort;
|
||||
import com.pablotj.restemailbridge.domain.model.Email;
|
||||
import com.pablotj.restemailbridge.domain.repository.EmailRepository;
|
||||
import com.pablotj.restemailbridge.domain.service.EmailService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Use case for sending emails.
|
||||
* <p>
|
||||
* Retrieves the default recipient from EmailConfigurationPort, sends the email using EmailService,
|
||||
* and persists it via EmailRepository.
|
||||
*/
|
||||
public class SendEmailUseCase {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(SendEmailUseCase.class);
|
||||
|
||||
private final EmailConfigurationPort emailConfigurationPort;
|
||||
private final EmailService emailService;
|
||||
private final EmailRepository emailRepository;
|
||||
|
||||
public SendEmailUseCase(EmailConfigurationPort emailConfigurationPort, EmailService emailService, EmailRepository emailRepository) {
|
||||
/**
|
||||
* Constructor injecting required ports.
|
||||
*
|
||||
* @param emailConfigurationPort Port to retrieve configuration
|
||||
* @param emailService Service to send emails
|
||||
* @param emailRepository Repository to persist emails
|
||||
*/
|
||||
public SendEmailUseCase(EmailConfigurationPort emailConfigurationPort,
|
||||
EmailService emailService,
|
||||
EmailRepository emailRepository) {
|
||||
this.emailConfigurationPort = emailConfigurationPort;
|
||||
this.emailService = emailService;
|
||||
this.emailRepository = emailRepository;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles sending an email based on the provided DTO.
|
||||
*
|
||||
* @param emailDTO DTO containing from, subject, and body
|
||||
*/
|
||||
public void handle(EmailDTO emailDTO) {
|
||||
String to = emailConfigurationPort.getDefaultRecipient();
|
||||
log.info("Sending email from {} to {}", emailDTO.from(), to);
|
||||
|
||||
Email email = emailService.sendEmail(
|
||||
Email.builder()
|
||||
.from(emailDTO.from())
|
||||
@@ -27,6 +54,8 @@ public class SendEmailUseCase {
|
||||
.body(emailDTO.body())
|
||||
.build()
|
||||
);
|
||||
emailRepository.save(email);
|
||||
|
||||
emailRepository.save(email); // Persist the sent email
|
||||
log.info("Email successfully sent and persisted to repository for recipient {}", to);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user