package zw.qantra.tm.domain.controllers; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import zw.qantra.tm.domain.models.AppVersion; import zw.qantra.tm.domain.services.AppVersionService; import java.util.Optional; @RestController @RequestMapping("/public/app-version") @RequiredArgsConstructor public class AppVersionController { private final AppVersionService appVersionService; /** * Client checks if a newer app build is available. * Pass the current build number as a query param. */ @GetMapping("/check/app") public ResponseEntity checkAppUpdate(@RequestParam Integer currentBuildNumber) { Optional update = appVersionService.checkForAppUpdate(currentBuildNumber); return update.map(ResponseEntity::ok) .orElse(ResponseEntity.noContent().build()); } /** * Client checks if a newer web build is available. * Pass the current build number as a query param. */ @GetMapping("/check/web") public ResponseEntity checkWebUpdate(@RequestParam Integer currentBuildNumber) { Optional update = appVersionService.checkForWebUpdate(currentBuildNumber); return update.map(ResponseEntity::ok) .orElse(ResponseEntity.noContent().build()); } /** * Get the latest version record. */ @GetMapping("/latest") public ResponseEntity getLatestVersion() { Optional latest = appVersionService.getLatestVersion(); return latest.map(ResponseEntity::ok) .orElse(ResponseEntity.noContent().build()); } /** * Persist a new version record (internal/admin use). */ @PostMapping public ResponseEntity save(@RequestBody AppVersion appVersion) { return ResponseEntity.ok(appVersionService.save(appVersion)); } }