Skip to content

Commit b58dec2

Browse files
refactor(dynamo): for easier reading, prefer return type this
also made some needless casts
1 parent f9eb890 commit b58dec2

File tree

6 files changed

+34
-23
lines changed

6 files changed

+34
-23
lines changed

src/dynamo/request/update/update.request.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export class UpdateRequest<T, T2 = void> extends WriteRequest<
3434
* create and add a single update operation
3535
* @example req.updateAttribute('path.to.attr').set('newVal')
3636
*/
37-
updateAttribute<K extends keyof T>(attributePath: K): RequestUpdateFunction<UpdateRequest<T, T2>, T, K> {
37+
updateAttribute<K extends keyof T>(attributePath: K): RequestUpdateFunction<this, T, K> {
3838
return addUpdate(attributePath, this, this.metadata)
3939
}
4040

src/dynamo/request/write.request.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,29 +45,29 @@ export abstract class WriteRequest<
4545
/**
4646
* return item collection metrics.
4747
*/
48-
returnItemCollectionMetrics(returnItemCollectionMetrics: DynamoDB.ReturnItemCollectionMetrics): R {
48+
returnItemCollectionMetrics(returnItemCollectionMetrics: DynamoDB.ReturnItemCollectionMetrics): this {
4949
this.params.ReturnItemCollectionMetrics = returnItemCollectionMetrics
50-
return <R>(<any>this)
50+
return this
5151
}
5252

5353
/**
5454
* add a condition for propertyPath
5555
* @param attributePath
5656
*/
57-
onlyIfAttribute<K extends keyof T>(attributePath: K): RequestConditionFunctionTyped<R, T, K>
58-
onlyIfAttribute(attributePath: string): RequestConditionFunction<R, T>
59-
onlyIfAttribute<K extends keyof T>(attributePath: K | string): RequestConditionFunctionTyped<R, T, K> {
60-
return addCondition<R, T, any>('ConditionExpression', attributePath, <any>this, this.metadata)
57+
onlyIfAttribute<K extends keyof T>(attributePath: K): RequestConditionFunctionTyped<this, T, K>
58+
onlyIfAttribute(attributePath: string): RequestConditionFunction<this, T>
59+
onlyIfAttribute<K extends keyof T>(attributePath: K | string): RequestConditionFunctionTyped<this, T, K> {
60+
return addCondition<this, T, any>('ConditionExpression', attributePath, <any>this, this.metadata)
6161
}
6262

6363
/**
6464
* @example writeRequest.onlyIf( attribute('age').eq(23) )
6565
* @example writeRequest.onlyIf( or( attribute('age').lt(18), attribute('age').gt(65) ) )
6666
*/
67-
onlyIf(...conditionDefFns: ConditionExpressionDefinitionFunction[]): R {
67+
onlyIf(...conditionDefFns: ConditionExpressionDefinitionFunction[]): this {
6868
const condition = and(...conditionDefFns)(undefined, this.metadata)
6969
addExpression('ConditionExpression', condition, this.params)
70-
return <any>this
70+
return this
7171
}
7272

7373
/**

src/dynamo/transactwrite/transact-base-operation.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,29 +50,29 @@ export abstract class TransactBaseOperation<
5050
* create a condition on given attributePath
5151
* @example req.onlyIfAttribute('age').lt(10)
5252
*/
53-
onlyIfAttribute<K extends keyof T>(attributePath: K): RequestConditionFunctionTyped<R, T, K>
54-
onlyIfAttribute(attributePath: string): RequestConditionFunction<R, T>
53+
onlyIfAttribute<K extends keyof T>(attributePath: K): RequestConditionFunctionTyped<this, T, K>
54+
onlyIfAttribute(attributePath: string): RequestConditionFunction<this, T>
5555
onlyIfAttribute<K extends keyof T>(
5656
attributePath: string | K,
57-
): RequestConditionFunction<R, T> | RequestConditionFunctionTyped<R, T, K> {
58-
return addCondition<R, T, any>('ConditionExpression', attributePath, <R>(<any>this), this.metadata)
57+
): RequestConditionFunction<this, T> | RequestConditionFunctionTyped<this, T, K> {
58+
return addCondition<this, T, any>('ConditionExpression', attributePath, this, this.metadata)
5959
}
6060

6161
/**
6262
* add a condition necessary for the transaction to succeed
6363
* @example req.onlyIf(or(attribute('age').lt(10), attribute('age').gt(20)))
6464
*/
65-
onlyIf(...conditionDefFns: ConditionExpressionDefinitionFunction[]): R {
65+
onlyIf(...conditionDefFns: ConditionExpressionDefinitionFunction[]): this {
6666
const condition = and(...conditionDefFns)(undefined, this.metadata)
6767
addExpression('ConditionExpression', condition, this.params)
68-
return <R>(<any>this)
68+
return this
6969
}
7070

7171
/**
7272
* get the item attributes if the condition fails
7373
*/
74-
returnValuesOnConditionCheckFailure(value: DynamoDB.ReturnValuesOnConditionCheckFailure): R {
74+
returnValuesOnConditionCheckFailure(value: DynamoDB.ReturnValuesOnConditionCheckFailure): this {
7575
this.params.ReturnValuesOnConditionCheckFailure = value
76-
return <R>(<any>this)
76+
return this
7777
}
7878
}

src/dynamo/transactwrite/transact-put.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ export class TransactPut<T> extends TransactBaseOperation<T, DynamoDB.Put, Trans
1616
this.params.Item = toDb(item, this.modelClazz)
1717
}
1818

19-
ifNotExists(predicate: boolean = true): TransactPut<T> {
19+
/**
20+
* Adds a condition expression to the request, which makes sure the item will only be saved if the id does not exist
21+
*/
22+
ifNotExists(predicate: boolean = true): this {
2023
if (predicate) {
2124
this.onlyIf(...createIfNotExistsCondition(this.metadata))
2225
}

src/dynamo/transactwrite/transact-update.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ export class TransactUpdate<T> extends TransactBaseOperation<T, DynamoDB.Update,
2323
* create and add a single update operation
2424
* @example updtTrans.updateAttribute('path.to.attr').set('newVal')
2525
*/
26-
updateAttribute<K extends keyof T>(attributePath: K): RequestUpdateFunction<TransactUpdate<T>, T, K> {
26+
updateAttribute<K extends keyof T>(attributePath: K): RequestUpdateFunction<this, T, K> {
2727
return addUpdate(attributePath, this, this.metadata)
2828
}
2929

3030
/**
3131
* add multiple update ops
3232
* @example updtTrans.operations(update('path.to.attr).set('newVal'), ... )
3333
*/
34-
operations(...updateDefFns: UpdateExpressionDefinitionFunction[]): TransactUpdate<T> {
34+
operations(...updateDefFns: UpdateExpressionDefinitionFunction[]): this {
3535
prepareAndAddUpdateExpressions(this.metadata, this.params, updateDefFns)
3636
return this
3737
}

src/dynamo/transactwrite/transact-write.request.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,28 @@ export class TransactWriteRequest {
2323
}
2424
}
2525

26-
returnConsumedCapacity(level: DynamoDB.ReturnConsumedCapacity): TransactWriteRequest {
26+
/**
27+
* return ConsumedCapacity of the corresponding table(s) in the response
28+
*/
29+
returnConsumedCapacity(level: DynamoDB.ReturnConsumedCapacity): this {
2730
this.params.ReturnConsumedCapacity = level
2831
return this
2932
}
3033

3134
/**
3235
* return item collection metrics.
3336
*/
34-
returnItemCollectionMetrics(returnItemCollectionMetrics: DynamoDB.ReturnItemCollectionMetrics): TransactWriteRequest {
37+
returnItemCollectionMetrics(returnItemCollectionMetrics: DynamoDB.ReturnItemCollectionMetrics): this {
3538
this.params.ReturnItemCollectionMetrics = returnItemCollectionMetrics
3639
return this
3740
}
3841

39-
transact(...writeOperations: TransactOperation[]): TransactWriteRequest {
42+
/**
43+
* add up to 10 transaction operations
44+
* create the operations with:
45+
* {@link TransactConditionCheck}, {@link TransactDelete}, {@link TransactPut}, {@link TransactUpdate}
46+
*/
47+
transact(...writeOperations: TransactOperation[]): this {
4048
if (!writeOperations || writeOperations.length === 0) {
4149
throw new Error('at least one transaction operation must be added')
4250
}

0 commit comments

Comments
 (0)