falta borrar y busqueda por columnas

This commit is contained in:
2025-09-27 17:07:24 +02:00
parent 88b43847f0
commit 847249d2de
25 changed files with 669 additions and 62 deletions

View File

@ -7,7 +7,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Function;
public class DataTable<T> {
@ -28,6 +27,7 @@ public class DataTable<T> {
private final List<FilterHook<T>> filters = new ArrayList<>();
private Specification<T> baseSpec = (root, q, cb) -> cb.conjunction();
private final ObjectMapper om = new ObjectMapper();
private List<String> orderable = null;
private DataTable(JpaSpecificationExecutor<T> repo, Class<T> entityClass, DataTablesRequest dt,
List<String> searchable) {
@ -79,6 +79,15 @@ public class DataTable<T> {
return this;
}
public DataTable<T> orderable(List<String> fields) {
this.orderable = fields;
return this;
}
private List<String> getOrderable() {
return (orderable == null || orderable.isEmpty()) ? this.searchable : this.orderable;
}
/** filter((builder, req) -> builder.add(miExtraSpec(req))) */
public DataTable<T> filter(FilterHook<T> hook) {
filters.add(hook);
@ -105,7 +114,7 @@ public class DataTable<T> {
continue;
if (!col.orderable)
continue;
if (!searchable.contains(field))
if (!getOrderable().contains(field))
continue; // << usa tu whitelist
orders.add(new Sort.Order(
@ -117,7 +126,7 @@ public class DataTable<T> {
} else {
for (var c : dt.columns) {
if (c != null && c.orderable && c.name != null && !c.name.isBlank()
&& searchable.contains(c.name)) {
&& getOrderable().contains(c.name)) {
sort = Sort.by(c.name);
break;
}