@stonyx/orm 0.3.2-beta.83 → 0.3.2-beta.84
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.
|
@@ -64,19 +64,22 @@ export function buildScan(tableName, conditions, exclusiveStartKey) {
|
|
|
64
64
|
if (exclusiveStartKey)
|
|
65
65
|
params.ExclusiveStartKey = exclusiveStartKey;
|
|
66
66
|
if (conditions && Object.keys(conditions).length > 0) {
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
const validEntries = Object.entries(conditions).filter(([, val]) => val !== undefined && val !== null);
|
|
68
|
+
if (validEntries.length > 0) {
|
|
69
|
+
const names = {};
|
|
70
|
+
const values = {};
|
|
71
|
+
const clauses = [];
|
|
72
|
+
for (const [attr, val] of validEntries) {
|
|
73
|
+
const nameAlias = `#${attr}`;
|
|
74
|
+
const valAlias = `:${attr}`;
|
|
75
|
+
names[nameAlias] = attr;
|
|
76
|
+
values[valAlias] = val;
|
|
77
|
+
clauses.push(`${nameAlias} = ${valAlias}`);
|
|
78
|
+
}
|
|
79
|
+
params.FilterExpression = clauses.join(' AND ');
|
|
80
|
+
params.ExpressionAttributeNames = names;
|
|
81
|
+
params.ExpressionAttributeValues = values;
|
|
76
82
|
}
|
|
77
|
-
params.FilterExpression = clauses.join(' AND ');
|
|
78
|
-
params.ExpressionAttributeNames = names;
|
|
79
|
-
params.ExpressionAttributeValues = values;
|
|
80
83
|
}
|
|
81
84
|
return params;
|
|
82
85
|
}
|
|
@@ -86,10 +89,14 @@ export function buildScan(tableName, conditions, exclusiveStartKey) {
|
|
|
86
89
|
* as equality expressions joined by AND.
|
|
87
90
|
*/
|
|
88
91
|
export function buildQuery(tableName, indexName, keyConditions, exclusiveStartKey) {
|
|
92
|
+
const validEntries = Object.entries(keyConditions).filter(([, val]) => val !== undefined && val !== null);
|
|
93
|
+
if (validEntries.length === 0) {
|
|
94
|
+
throw new Error('buildQuery: all keyCondition values are undefined/null');
|
|
95
|
+
}
|
|
89
96
|
const names = {};
|
|
90
97
|
const values = {};
|
|
91
98
|
const clauses = [];
|
|
92
|
-
for (const [attr, val] of
|
|
99
|
+
for (const [attr, val] of validEntries) {
|
|
93
100
|
const nameAlias = `#${attr}`;
|
|
94
101
|
const valAlias = `:${attr}`;
|
|
95
102
|
names[nameAlias] = attr;
|
package/package.json
CHANGED
|
@@ -131,21 +131,27 @@ export function buildScan(
|
|
|
131
131
|
if (exclusiveStartKey) params.ExclusiveStartKey = exclusiveStartKey;
|
|
132
132
|
|
|
133
133
|
if (conditions && Object.keys(conditions).length > 0) {
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
134
|
+
const validEntries = Object.entries(conditions).filter(
|
|
135
|
+
([, val]) => val !== undefined && val !== null,
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
if (validEntries.length > 0) {
|
|
139
|
+
const names: Record<string, string> = {};
|
|
140
|
+
const values: Record<string, unknown> = {};
|
|
141
|
+
const clauses: string[] = [];
|
|
142
|
+
|
|
143
|
+
for (const [attr, val] of validEntries) {
|
|
144
|
+
const nameAlias = `#${attr}`;
|
|
145
|
+
const valAlias = `:${attr}`;
|
|
146
|
+
names[nameAlias] = attr;
|
|
147
|
+
values[valAlias] = val;
|
|
148
|
+
clauses.push(`${nameAlias} = ${valAlias}`);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
params.FilterExpression = clauses.join(' AND ');
|
|
152
|
+
params.ExpressionAttributeNames = names;
|
|
153
|
+
params.ExpressionAttributeValues = values;
|
|
144
154
|
}
|
|
145
|
-
|
|
146
|
-
params.FilterExpression = clauses.join(' AND ');
|
|
147
|
-
params.ExpressionAttributeNames = names;
|
|
148
|
-
params.ExpressionAttributeValues = values;
|
|
149
155
|
}
|
|
150
156
|
|
|
151
157
|
return params;
|
|
@@ -162,11 +168,19 @@ export function buildQuery(
|
|
|
162
168
|
keyConditions: Record<string, unknown>,
|
|
163
169
|
exclusiveStartKey?: Record<string, unknown>,
|
|
164
170
|
): QueryParams {
|
|
171
|
+
const validEntries = Object.entries(keyConditions).filter(
|
|
172
|
+
([, val]) => val !== undefined && val !== null,
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
if (validEntries.length === 0) {
|
|
176
|
+
throw new Error('buildQuery: all keyCondition values are undefined/null');
|
|
177
|
+
}
|
|
178
|
+
|
|
165
179
|
const names: Record<string, string> = {};
|
|
166
180
|
const values: Record<string, unknown> = {};
|
|
167
181
|
const clauses: string[] = [];
|
|
168
182
|
|
|
169
|
-
for (const [attr, val] of
|
|
183
|
+
for (const [attr, val] of validEntries) {
|
|
170
184
|
const nameAlias = `#${attr}`;
|
|
171
185
|
const valAlias = `:${attr}`;
|
|
172
186
|
names[nameAlias] = attr;
|