package zw.qantra.tm.domain.controllers; import lombok.RequiredArgsConstructor; import zw.qantra.tm.domain.services.TransactionService; import zw.qantra.tm.domain.models.Transaction; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.UUID; @RestController @RequestMapping("/transaction") @RequiredArgsConstructor public class TransactonController { private final TransactionService transactionService; @GetMapping public ResponseEntity> getAll() { return ResponseEntity.ok(transactionService.getTransactionRepository().findAll()); } @GetMapping("/{id}") public ResponseEntity getById(@PathVariable UUID id) { return transactionService.getTransactionRepository().findById(id) .map(ResponseEntity::ok) .orElse(ResponseEntity.notFound().build()); } @PostMapping public ResponseEntity create(@RequestBody Transaction transaction) { return ResponseEntity.ok(transactionService.execute(transaction)); } @PutMapping("/{id}") public ResponseEntity update(@PathVariable UUID id, @RequestBody Transaction transaction) { if (!transactionService.getTransactionRepository().existsById(id)) { return ResponseEntity.notFound().build(); } transaction.setId(id); return ResponseEntity.ok(transactionService.execute(transaction)); } @DeleteMapping("/{id}") public ResponseEntity delete(@PathVariable UUID id) { if (!transactionService.getTransactionRepository().existsById(id)) { return ResponseEntity.notFound().build(); } transactionService.getTransactionRepository().deleteById(id); return ResponseEntity.noContent().build(); } }