@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 names = {};
68
- const values = {};
69
- const clauses = [];
70
- for (const [attr, val] of Object.entries(conditions)) {
71
- const nameAlias = `#${attr}`;
72
- const valAlias = `:${attr}`;
73
- names[nameAlias] = attr;
74
- values[valAlias] = val;
75
- clauses.push(`${nameAlias} = ${valAlias}`);
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 Object.entries(keyConditions)) {
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
@@ -4,7 +4,7 @@
4
4
  "stonyx-async",
5
5
  "stonyx-module"
6
6
  ],
7
- "version": "0.3.2-beta.83",
7
+ "version": "0.3.2-beta.84",
8
8
  "description": "",
9
9
  "main": "dist/index.js",
10
10
  "type": "module",
@@ -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 names: Record<string, string> = {};
135
- const values: Record<string, unknown> = {};
136
- const clauses: string[] = [];
137
-
138
- for (const [attr, val] of Object.entries(conditions)) {
139
- const nameAlias = `#${attr}`;
140
- const valAlias = `:${attr}`;
141
- names[nameAlias] = attr;
142
- values[valAlias] = val;
143
- clauses.push(`${nameAlias} = ${valAlias}`);
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 Object.entries(keyConditions)) {
183
+ for (const [attr, val] of validEntries) {
170
184
  const nameAlias = `#${attr}`;
171
185
  const valAlias = `:${attr}`;
172
186
  names[nameAlias] = attr;