feature: bind criteria to fetch request

This commit is contained in:
RouxAntoine 2023-07-24 19:45:21 +02:00
parent eaf5412149
commit 30b3a8832d
Signed by: antoine
GPG Key ID: 098FB66FC0475E70
3 changed files with 9 additions and 5 deletions

View File

@ -39,4 +39,7 @@ public record Criteria(String rawCriteria) {
.getOrElse(false);
}
public static boolean isEmpty(Criteria criteria) {
return criteria.rawCriteria.isEmpty();
}
}

View File

@ -15,6 +15,7 @@ import tk.antoine.roux.domain.usecases.Command.EmptyCommand;
import tk.antoine.roux.domain.usecases.operation.GetNodesUseCase;
import java.util.Optional;
import java.util.function.Predicate;
@RestController
@RequestMapping("${backoffice.configuration.api-prefix}/v1")
@ -31,6 +32,7 @@ public class NodeController {
@GetMapping("/nodes")
ResponseEntity<?> listNode(@RequestParam(required = false, value = "criteria") Optional<Criteria> optionalCriteria) {
return Option.ofOptional(optionalCriteria)
.filter(Predicate.not(Criteria::isEmpty))
.map(criteria -> criteria.toCommand().map(Command.class::cast))
.toEither(EMPTY_COMMAND)
.getOrElseGet(Either::right)

View File

@ -4,13 +4,12 @@ function Nodes({criteria}) {
const [nodes, setNodes] = React.useState([]);
React.useEffect(() => {
fetch("/api/v1/nodes")
let query = new URL("/api/v1/nodes", window.location.origin);
query.searchParams.append("criteria", criteria)
fetch(query)
.then(response => response.json())
.then(value => setNodes(value));
}, []);
React.useEffect(() => {
console.log(criteria);
}, [criteria]);
return (