package nl.astraeus.nl.astraeus.persistence import java.io.File import java.io.ObjectInputStream class TransactionLog( val directory: File, ) { val fileManager = FileManager(directory) fun showTransactions() { fileManager.findLastSnapshot().let { (after, snapshot) -> println("Last snapshot: $snapshot") val transactions = fileManager.findTransactionsAfter(after ?: 0L) println("Transactions:") transactions?.forEach { transaction -> transaction.inputStream().use { input -> ObjectInputStream(input).use { ois -> val versionNumber = ois.readInt() check(versionNumber == 1) { "Unsupported version number: $versionNumber" } val transactionNumber = ois.readLong() val actions = ois.readObject() as Set println("[$versionNumber] $transactionNumber - ${actions.joinToString(",")}") } } } } } }