Files
hlaeja-management/src/main/kotlin/ltd/hlaeja/controller/NodeController.kt
Swordsteel 570981d5ac add nodes list
- add NodeController
- add getNodes to DeviceRegistryService
- add WebClient deviceRegistryNodes to DeviceRegisterWebClientCalls.kt
- add node list.html
- add node to main menu and cleanup in layout.html
- add node to AdminPaths.kt
2025-08-18 10:17:50 +02:00

38 lines
1.3 KiB
Kotlin

package ltd.hlaeja.controller
import jakarta.validation.constraints.Max
import jakarta.validation.constraints.Min
import ltd.hlaeja.service.DeviceRegistryService
import ltd.hlaeja.util.Pagination
import ltd.hlaeja.util.Pagination.Companion.DEFAULT_PAGE
import ltd.hlaeja.util.Pagination.Companion.DEFAULT_SIZE
import ltd.hlaeja.util.Pagination.Companion.MAX
import ltd.hlaeja.util.Pagination.Companion.MIN
import org.springframework.stereotype.Controller
import org.springframework.ui.Model
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import reactor.core.publisher.Mono
@Controller
class NodeController(
private val deviceRegistryService: DeviceRegistryService,
) {
@GetMapping(
"/node",
"/node/page-{page}",
"/node/page-{page}/show-{show}",
)
fun getNodes(
@PathVariable(required = false) @Min(MIN) page: Int = DEFAULT_PAGE,
@PathVariable(required = false) @Min(MIN) @Max(MAX) show: Int = DEFAULT_SIZE,
model: Model,
) = deviceRegistryService.getNodes(page, show)
.collectList()
.doOnNext { items ->
model.addAttribute("items", items)
model.addAttribute("pagination", Pagination(page, show, items.size, DEFAULT_SIZE))
}
.then(Mono.just("node/list"))
}