ugly-app 0.1.162 → 0.1.163
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/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/server/PostgresFilter.d.ts.map +1 -1
- package/dist/server/PostgresFilter.js +25 -11
- package/dist/server/PostgresFilter.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/server/PostgresFilter.ts +25 -10
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.163";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresFilter.d.ts","sourceRoot":"","sources":["../../src/server/PostgresFilter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"PostgresFilter.d.ts","sourceRoot":"","sources":["../../src/server/PostgresFilter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAsBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CA8FjF;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAOlE"}
|
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
* Fields are accessed via JSONB operators (data->>'field' for text, casts for numbers/booleans).
|
|
6
6
|
* Dot-notation paths (e.g. 'user.profile.name') are translated to -> chains.
|
|
7
7
|
*/
|
|
8
|
+
/** Fields stored as top-level columns rather than inside the JSONB data column. */
|
|
9
|
+
const TOP_LEVEL_COLUMNS = new Set(['_id', 'created', 'updated', 'version']);
|
|
8
10
|
/** Build the JSONB accessor for a field path. Last segment uses ->> (text extraction). */
|
|
9
11
|
function jsonbPath(field, asText = true) {
|
|
10
|
-
if (field
|
|
11
|
-
return
|
|
12
|
+
if (TOP_LEVEL_COLUMNS.has(field))
|
|
13
|
+
return `"${field}"`;
|
|
12
14
|
const parts = field.split('.');
|
|
13
15
|
if (parts.length === 1) {
|
|
14
16
|
return asText ? `data->>'${parts[0]}'` : `data->'${parts[0]}'`;
|
|
@@ -44,26 +46,38 @@ export function translateFilter(filter) {
|
|
|
44
46
|
values.push(operand);
|
|
45
47
|
paramIdx++;
|
|
46
48
|
break;
|
|
47
|
-
case '$gt':
|
|
48
|
-
|
|
49
|
+
case '$gt': {
|
|
50
|
+
const acc = jsonbPath(field);
|
|
51
|
+
const cast = TOP_LEVEL_COLUMNS.has(field) ? acc : `(${acc})::numeric`;
|
|
52
|
+
clauses.push(`${cast} > $${paramIdx}`);
|
|
49
53
|
values.push(operand);
|
|
50
54
|
paramIdx++;
|
|
51
55
|
break;
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
}
|
|
57
|
+
case '$gte': {
|
|
58
|
+
const acc = jsonbPath(field);
|
|
59
|
+
const cast = TOP_LEVEL_COLUMNS.has(field) ? acc : `(${acc})::numeric`;
|
|
60
|
+
clauses.push(`${cast} >= $${paramIdx}`);
|
|
54
61
|
values.push(operand);
|
|
55
62
|
paramIdx++;
|
|
56
63
|
break;
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
}
|
|
65
|
+
case '$lt': {
|
|
66
|
+
const acc = jsonbPath(field);
|
|
67
|
+
const cast = TOP_LEVEL_COLUMNS.has(field) ? acc : `(${acc})::numeric`;
|
|
68
|
+
clauses.push(`${cast} < $${paramIdx}`);
|
|
59
69
|
values.push(operand);
|
|
60
70
|
paramIdx++;
|
|
61
71
|
break;
|
|
62
|
-
|
|
63
|
-
|
|
72
|
+
}
|
|
73
|
+
case '$lte': {
|
|
74
|
+
const acc = jsonbPath(field);
|
|
75
|
+
const cast = TOP_LEVEL_COLUMNS.has(field) ? acc : `(${acc})::numeric`;
|
|
76
|
+
clauses.push(`${cast} <= $${paramIdx}`);
|
|
64
77
|
values.push(operand);
|
|
65
78
|
paramIdx++;
|
|
66
79
|
break;
|
|
80
|
+
}
|
|
67
81
|
case '$ne':
|
|
68
82
|
clauses.push(`${jsonbPath(field)} != $${paramIdx}`);
|
|
69
83
|
values.push(operand);
|
|
@@ -112,7 +126,7 @@ export function translateFilter(filter) {
|
|
|
112
126
|
export function translateSort(sort) {
|
|
113
127
|
return Object.entries(sort)
|
|
114
128
|
.map(([field, dir]) => {
|
|
115
|
-
const accessor = field
|
|
129
|
+
const accessor = TOP_LEVEL_COLUMNS.has(field) ? `"${field}"` : jsonbPath(field);
|
|
116
130
|
return `${accessor} ${dir === 1 ? 'ASC' : 'DESC'}`;
|
|
117
131
|
})
|
|
118
132
|
.join(', ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresFilter.js","sourceRoot":"","sources":["../../src/server/PostgresFilter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,0FAA0F;AAC1F,SAAS,SAAS,CAAC,KAAa,EAAE,MAAM,GAAG,IAAI;IAC7C,IAAI,
|
|
1
|
+
{"version":3,"file":"PostgresFilter.js","sourceRoot":"","sources":["../../src/server/PostgresFilter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.163";
|
|
@@ -11,9 +11,12 @@ export interface TranslatedFilter {
|
|
|
11
11
|
values: unknown[];
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
/** Fields stored as top-level columns rather than inside the JSONB data column. */
|
|
15
|
+
const TOP_LEVEL_COLUMNS = new Set(['_id', 'created', 'updated', 'version']);
|
|
16
|
+
|
|
14
17
|
/** Build the JSONB accessor for a field path. Last segment uses ->> (text extraction). */
|
|
15
18
|
function jsonbPath(field: string, asText = true): string {
|
|
16
|
-
if (field
|
|
19
|
+
if (TOP_LEVEL_COLUMNS.has(field)) return `"${field}"`;
|
|
17
20
|
const parts = field.split('.');
|
|
18
21
|
if (parts.length === 1) {
|
|
19
22
|
return asText ? `data->>'${parts[0]}'` : `data->'${parts[0]}'`;
|
|
@@ -51,26 +54,38 @@ export function translateFilter(filter: Record<string, unknown>): TranslatedFilt
|
|
|
51
54
|
values.push(operand);
|
|
52
55
|
paramIdx++;
|
|
53
56
|
break;
|
|
54
|
-
case '$gt':
|
|
55
|
-
|
|
57
|
+
case '$gt': {
|
|
58
|
+
const acc = jsonbPath(field);
|
|
59
|
+
const cast = TOP_LEVEL_COLUMNS.has(field) ? acc : `(${acc})::numeric`;
|
|
60
|
+
clauses.push(`${cast} > $${paramIdx}`);
|
|
56
61
|
values.push(operand);
|
|
57
62
|
paramIdx++;
|
|
58
63
|
break;
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
}
|
|
65
|
+
case '$gte': {
|
|
66
|
+
const acc = jsonbPath(field);
|
|
67
|
+
const cast = TOP_LEVEL_COLUMNS.has(field) ? acc : `(${acc})::numeric`;
|
|
68
|
+
clauses.push(`${cast} >= $${paramIdx}`);
|
|
61
69
|
values.push(operand);
|
|
62
70
|
paramIdx++;
|
|
63
71
|
break;
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
}
|
|
73
|
+
case '$lt': {
|
|
74
|
+
const acc = jsonbPath(field);
|
|
75
|
+
const cast = TOP_LEVEL_COLUMNS.has(field) ? acc : `(${acc})::numeric`;
|
|
76
|
+
clauses.push(`${cast} < $${paramIdx}`);
|
|
66
77
|
values.push(operand);
|
|
67
78
|
paramIdx++;
|
|
68
79
|
break;
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
}
|
|
81
|
+
case '$lte': {
|
|
82
|
+
const acc = jsonbPath(field);
|
|
83
|
+
const cast = TOP_LEVEL_COLUMNS.has(field) ? acc : `(${acc})::numeric`;
|
|
84
|
+
clauses.push(`${cast} <= $${paramIdx}`);
|
|
71
85
|
values.push(operand);
|
|
72
86
|
paramIdx++;
|
|
73
87
|
break;
|
|
88
|
+
}
|
|
74
89
|
case '$ne':
|
|
75
90
|
clauses.push(`${jsonbPath(field)} != $${paramIdx}`);
|
|
76
91
|
values.push(operand);
|
|
@@ -116,7 +131,7 @@ export function translateFilter(filter: Record<string, unknown>): TranslatedFilt
|
|
|
116
131
|
export function translateSort(sort: Record<string, 1 | -1>): string {
|
|
117
132
|
return Object.entries(sort)
|
|
118
133
|
.map(([field, dir]) => {
|
|
119
|
-
const accessor = field
|
|
134
|
+
const accessor = TOP_LEVEL_COLUMNS.has(field) ? `"${field}"` : jsonbPath(field);
|
|
120
135
|
return `${accessor} ${dir === 1 ? 'ASC' : 'DESC'}`;
|
|
121
136
|
})
|
|
122
137
|
.join(', ');
|