@toolplex/app-server 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +68 -3
- package/dist/routes/data.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AAItE,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,eAAe,GACtB,IAAI,
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AAItE,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,eAAe,GACtB,IAAI,CAyCN"}
|
package/dist/routes/data.js
CHANGED
|
@@ -10,14 +10,79 @@ export function registerDataRoutes(fastify, config) {
|
|
|
10
10
|
const params = parseFetchParams(request.query);
|
|
11
11
|
const response = await definition.fetch(params);
|
|
12
12
|
validateFetchResponse(resource, response);
|
|
13
|
+
// Apply column filters (_cf_ prefixed) post-fetch
|
|
14
|
+
// These are auto-applied by the library so developers don't need to handle them
|
|
15
|
+
const columnFilters = extractColumnFilters(params.filters);
|
|
16
|
+
let filteredRows = response.rows;
|
|
17
|
+
let filteredTotal = response.total;
|
|
18
|
+
if (columnFilters.length > 0) {
|
|
19
|
+
filteredRows = applyColumnFilters(filteredRows, columnFilters);
|
|
20
|
+
filteredTotal = filteredRows.length;
|
|
21
|
+
// Re-paginate after filtering
|
|
22
|
+
const start = (params.page - 1) * params.pageSize;
|
|
23
|
+
filteredRows = filteredRows.slice(start, start + params.pageSize);
|
|
24
|
+
}
|
|
13
25
|
const result = {
|
|
14
|
-
rows:
|
|
15
|
-
total:
|
|
26
|
+
rows: filteredRows,
|
|
27
|
+
total: filteredTotal,
|
|
16
28
|
page: params.page,
|
|
17
29
|
pageSize: params.pageSize,
|
|
18
|
-
totalPages: Math.ceil(
|
|
30
|
+
totalPages: Math.ceil(filteredTotal / params.pageSize),
|
|
19
31
|
};
|
|
20
32
|
return reply.send(result);
|
|
21
33
|
});
|
|
22
34
|
}
|
|
35
|
+
function extractColumnFilters(filters) {
|
|
36
|
+
if (!filters)
|
|
37
|
+
return [];
|
|
38
|
+
const result = [];
|
|
39
|
+
for (const [key, value] of Object.entries(filters)) {
|
|
40
|
+
if (!key.startsWith("_cf_"))
|
|
41
|
+
continue;
|
|
42
|
+
const rest = key.slice(4); // remove _cf_ prefix
|
|
43
|
+
const parts = rest.split("__");
|
|
44
|
+
const columnKey = parts[0];
|
|
45
|
+
const operator = (parts[1] || "contains");
|
|
46
|
+
result.push({ columnKey, operator, value });
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
function resolveKey(row, key) {
|
|
51
|
+
const parts = key.split(".");
|
|
52
|
+
let current = row;
|
|
53
|
+
for (const part of parts) {
|
|
54
|
+
if (current === null || current === undefined || typeof current !== "object")
|
|
55
|
+
return undefined;
|
|
56
|
+
current = current[part];
|
|
57
|
+
}
|
|
58
|
+
return current;
|
|
59
|
+
}
|
|
60
|
+
function applyColumnFilters(rows, filters) {
|
|
61
|
+
return rows.filter((row) => filters.every((f) => {
|
|
62
|
+
const cellValue = resolveKey(row, f.columnKey);
|
|
63
|
+
switch (f.operator) {
|
|
64
|
+
case "empty":
|
|
65
|
+
return (cellValue === null ||
|
|
66
|
+
cellValue === undefined ||
|
|
67
|
+
cellValue === "");
|
|
68
|
+
case "not_empty":
|
|
69
|
+
return (cellValue !== null &&
|
|
70
|
+
cellValue !== undefined &&
|
|
71
|
+
cellValue !== "");
|
|
72
|
+
case "equals":
|
|
73
|
+
return (String(cellValue ?? "").toLowerCase() ===
|
|
74
|
+
f.value.toLowerCase());
|
|
75
|
+
case "contains":
|
|
76
|
+
return String(cellValue ?? "")
|
|
77
|
+
.toLowerCase()
|
|
78
|
+
.includes(f.value.toLowerCase());
|
|
79
|
+
case "gt":
|
|
80
|
+
return Number(cellValue) > Number(f.value);
|
|
81
|
+
case "lt":
|
|
82
|
+
return Number(cellValue) < Number(f.value);
|
|
83
|
+
default:
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
23
88
|
//# sourceMappingURL=data.js.map
|
package/dist/routes/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAChC,OAAwB,EACxB,MAAuB;IAEvB,OAAO,CAAC,GAAG,CAGR,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,QAAQ,aAAa,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEhD,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE1C,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED