diff --git a/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/repository/TxRepositoryStub.java b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/repository/TxRepositoryStub.java new file mode 100644 index 0000000..0ca9286 --- /dev/null +++ b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/repository/TxRepositoryStub.java @@ -0,0 +1,70 @@ +package com.klaro.acquirecore.acquiring.repository; + +import com.klaro.acquirecore.acquiring.dto.TxMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Repository; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Stub implementation of TxRepository. + * In-memory storage for development/testing. + */ +@Repository +public class TxRepositoryStub implements TxRepository { + + private static final Logger log = LoggerFactory.getLogger(TxRepositoryStub.class); + + private final Map transactions = new ConcurrentHashMap<>(); + private final Map activeMerchants = new ConcurrentHashMap<>(); + private final Map activeTerminals = new ConcurrentHashMap<>(); + + public TxRepositoryStub() { + // Initialize with test data + activeMerchants.put("M001", true); + activeMerchants.put("M002", true); + activeTerminals.put("M001|T001", true); + activeTerminals.put("M001|T002", true); + activeTerminals.put("M002|T001", true); + } + + @Override + public boolean isMerchantActive(String merchantId) { + return activeMerchants.getOrDefault(merchantId, true); + } + + @Override + public boolean isTerminalActive(String merchantId, String terminalId) { + return activeTerminals.getOrDefault(merchantId + "|" + terminalId, true); + } + + @Override + public void saveTransaction(TxMessage msg) { + if (msg.getTxId() != null) { + transactions.put(msg.getTxId(), msg); + log.debug("Saved transaction: {}", msg.getTxId()); + } + } + + @Override + public boolean transactionExists(String txId) { + return transactions.containsKey(txId); + } + + @Override + public String getTransactionStatus(String txId) { + TxMessage msg = transactions.get(txId); + return msg != null ? msg.getStatus() : null; + } + + @Override + public void updateTransactionStatus(String txId, String status) { + TxMessage msg = transactions.get(txId); + if (msg != null) { + msg.setStatus(status); + log.debug("Updated transaction {} status to {}", txId, status); + } + } +}