Skip to content

Commit 7ebc57d

Browse files
committed
feat(update): add support for native document client options ✨
1 parent 1294c07 commit 7ebc57d

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

src/base-model.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -412,21 +412,32 @@ export default abstract class Model<T> {
412412
public async update(
413413
pk: Key,
414414
sk_actions: Key | IUpdateActions,
415-
actions?: IUpdateActions,
415+
actions_options?: IUpdateActions | Partial<DocumentClient.UpdateItemInput>,
416416
options?: Partial<DocumentClient.UpdateItemInput>,
417417
): Promise<PromiseResult<DocumentClient.UpdateItemOutput, AWSError>> {
418418
// Handle overloading
419-
const sk: Key = isKey(sk_actions) ? sk_actions : null;
420-
const updateActions: IUpdateActions = isKey(sk_actions) ? actions : sk_actions;
421-
// Build updateItem params
419+
let sk: Key;
420+
let updateActions: IUpdateActions;
421+
let nativeOptions: Partial<DocumentClient.UpdateItemInput>;
422+
if (!isKey(sk_actions)) {
423+
// 1st overload
424+
sk = null;
425+
updateActions = sk_actions;
426+
nativeOptions = actions_options;
427+
} else {
428+
// 2nd iverload
429+
sk = sk_actions;
430+
updateActions = actions_options as IUpdateActions;
431+
nativeOptions = options;
432+
}
422433
this.testKeys(pk, sk);
423434
const params: DocumentClient.UpdateItemInput = {
424435
TableName: this.tableName,
425436
Key: this.buildKeys(pk, sk),
426437
AttributeUpdates: buildUpdateActions(updateActions),
427438
};
428-
if (options) {
429-
Object.assign(params, options);
439+
if (nativeOptions) {
440+
Object.assign(params, nativeOptions);
430441
}
431442
return this.documentClient.update(params).promise();
432443
}

0 commit comments

Comments
 (0)