Skip to content

Commit 74630c1

Browse files
Merge pull request #121 from shiftcode/#105-transact-get-single-table
#105 transact get single table
2 parents 9db04d4 + ab26cc4 commit 74630c1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+894
-798
lines changed

dynamoDbAbstraction.monopic

-12.4 KB
Binary file not shown.

src/dynamo/create-ket-attributes.function.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/dynamo/create-key-attributes.function.spec.ts

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/dynamo/dynamo-store.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
PutRequest,
1515
QueryRequest,
1616
ScanRequest,
17+
TransactGetSingleTableRequest,
1718
UpdateRequest,
1819
} from './request'
1920
import { BatchWriteSingleTableRequest } from './request/batchwritesingletable/batch-write-single-table.request'
@@ -77,8 +78,9 @@ describe('dynamo store', () => {
7778
it('batchWrite', () => expect(store.batchWrite() instanceof BatchWriteSingleTableRequest).toBeTruthy())
7879
it('scan', () => expect(store.scan() instanceof ScanRequest).toBeTruthy())
7980
it('query', () => expect(store.query() instanceof QueryRequest).toBeTruthy())
80-
it('batchGetItem', () =>
81-
expect(store.batchGetItem([{ id: 'id' }]) instanceof BatchGetSingleTableRequest).toBeTruthy())
81+
it('batchGet', () => expect(store.batchGet([{ id: 'id' }]) instanceof BatchGetSingleTableRequest).toBeTruthy())
82+
it('transactGet', () =>
83+
expect(store.transactGet([{ id: 'myId' }]) instanceof TransactGetSingleTableRequest).toBeTruthy())
8284
})
8385

8486
describe('should enable custom requests', () => {

src/dynamo/dynamo-store.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
PutRequest,
1414
QueryRequest,
1515
ScanRequest,
16+
TransactGetSingleTableRequest,
1617
UpdateRequest,
1718
} from './request'
1819
import { BatchWriteSingleTableRequest } from './request/batchwritesingletable/batch-write-single-table.request'
@@ -52,15 +53,6 @@ export class DynamoStore<T> {
5253
return new DeleteRequest(this.dynamoRx, this.modelClazz, partitionKey, sortKey)
5354
}
5455

55-
/**
56-
* This is a special implementation of batchWriteItem request, because it only supports one table,
57-
* if you wish to write items to multiple tables
58-
* create an instance of BatchWriteItemInput and use store.makeRequest with it.
59-
*/
60-
batchWrite(): BatchWriteSingleTableRequest<T> {
61-
return new BatchWriteSingleTableRequest<T>(this.dynamoRx, this.modelClazz)
62-
}
63-
6456
scan(): ScanRequest<T> {
6557
return new ScanRequest<T>(this.dynamoRx, this.modelClazz)
6658
}
@@ -74,10 +66,23 @@ export class DynamoStore<T> {
7466
* if you wish to retrieve items from multiple tables
7567
* create an instance of BatchGetItemInput and use store.makeRequest with it.
7668
*/
77-
batchGetItem(keys: any[]): BatchGetSingleTableRequest<T> {
69+
batchGet(keys: Array<Partial<T>>): BatchGetSingleTableRequest<T> {
7870
return new BatchGetSingleTableRequest(this.dynamoRx, this.modelClazz, keys)
7971
}
8072

73+
/**
74+
* This is a special implementation of batchWriteItem request, because it only supports one table,
75+
* if you wish to write items to multiple tables
76+
* create an instance of BatchWriteItemInput and use store.makeRequest with it.
77+
*/
78+
batchWrite(): BatchWriteSingleTableRequest<T> {
79+
return new BatchWriteSingleTableRequest<T>(this.dynamoRx, this.modelClazz)
80+
}
81+
82+
transactGet(keys: Array<Partial<T>>): TransactGetSingleTableRequest<T> {
83+
return new TransactGetSingleTableRequest(this.dynamoRx, this.modelClazz, keys)
84+
}
85+
8186
makeRequest<Z>(operation: DynamoApiOperations, params?: { [key: string]: any }): Observable<Z> {
8287
this.logger.debug('request', params)
8388
return this.dynamoRx.makeRequest(operation, params).pipe(tap(response => this.logger.debug('response', response)))

src/dynamo/create-if-not-exists-condition.function.spec.ts renamed to src/dynamo/expression/create-if-not-exists-condition.function.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as DynamoDB from 'aws-sdk/clients/dynamodb'
2-
import { SimpleWithCompositePartitionKeyModel, SimpleWithPartitionKeyModel } from '../../test/models'
3-
import { Metadata, metadataForClass } from '../decorator/metadata'
4-
import { toDb } from '../mapper'
2+
import { SimpleWithCompositePartitionKeyModel, SimpleWithPartitionKeyModel } from '../../../test/models/index'
3+
import { Metadata, metadataForClass } from '../../decorator/metadata/index'
4+
import { toDb } from '../../mapper/index'
55
import { createIfNotExistsCondition } from './create-if-not-exists-condition.function'
6-
import { and } from './expression/logical-operator'
7-
import { addExpression } from './expression/param-util'
8-
import { getTableName } from './get-table-name.function'
6+
import { and } from './logical-operator/index'
7+
import { addExpression } from './param-util'
8+
import { getTableName } from '../get-table-name.function'
99

1010
describe('create ifNotExistsCondition', () => {
1111
const jsItemSimple: SimpleWithPartitionKeyModel = { id: 'myId-S', age: 20 }

src/dynamo/create-if-not-exists-condition.function.ts renamed to src/dynamo/expression/create-if-not-exists-condition.function.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { hasSortKey, Metadata } from '../decorator/metadata'
2-
import { attribute } from './expression/logical-operator'
3-
import { ConditionExpressionDefinitionFunction } from './expression/type'
4-
1+
import { hasSortKey, Metadata } from '../../decorator/metadata/index'
2+
import { attribute } from './logical-operator/index'
3+
import { ConditionExpressionDefinitionFunction } from './type/index'
54

65
export function createIfNotExistsCondition<T>(metadata: Metadata<T>): ConditionExpressionDefinitionFunction[] {
76
const conditionDefFns: ConditionExpressionDefinitionFunction[] = [

src/dynamo/prepare-and-add-update-expressions.function.spec.ts renamed to src/dynamo/expression/prepare-and-add-update-expressions.function.spec.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as DynamoDB from 'aws-sdk/clients/dynamodb'
2-
import { Address, UpdateModel } from '../../test/models'
3-
import { FormId, FormType, Order, OrderId } from '../../test/models/real-world'
4-
import { Metadata, metadataForClass } from '../decorator/metadata'
5-
import { createKeyAttributes } from './create-ket-attributes.function'
6-
import { and, not, update2 } from './expression/logical-operator'
7-
import { attribute } from './expression/logical-operator/attribute.function'
8-
import { update } from './expression/logical-operator/update.function'
9-
import { addExpression } from './expression/param-util'
10-
import { getTableName } from './get-table-name.function'
2+
import { Address, UpdateModel } from '../../../test/models/index'
3+
import { FormId, FormType, Order, OrderId } from '../../../test/models/real-world/index'
4+
import { Metadata, metadataForClass } from '../../decorator/metadata/index'
5+
import { createKeyAttributes } from '../../mapper'
6+
import { and, not, update2 } from './logical-operator/index'
7+
import { attribute } from './logical-operator/attribute.function'
8+
import { update } from './logical-operator/update.function'
9+
import { addExpression } from './param-util'
10+
import { getTableName } from '../get-table-name.function'
1111
import { prepareAndAddUpdateExpressions } from './prepare-and-add-update-expressions.function'
1212

1313
describe('PrepareExpressions function', () => {

src/dynamo/prepare-and-add-update-expressions.function.ts renamed to src/dynamo/expression/prepare-and-add-update-expressions.function.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import * as DynamoDB from 'aws-sdk/clients/dynamodb'
22
import { forEach } from 'lodash'
3-
import { Metadata } from '../decorator/metadata'
4-
import { Attributes } from '../mapper'
5-
import { addUpdateExpression } from './expression/param-util'
6-
import { Expression, UpdateExpressionDefinitionFunction } from './expression/type'
7-
import { SortedUpdateExpressions } from './request/update/update.request'
8-
3+
import { Metadata } from '../../decorator/metadata/index'
4+
import { Attributes } from '../../mapper/index'
5+
import { SortedUpdateExpressions } from '../request/update/update.request'
6+
import { addUpdateExpression } from './param-util'
7+
import { Expression, UpdateExpressionDefinitionFunction } from './type/index'
98

109
export function prepareAndAddUpdateExpressions(
1110
metadata: Metadata<any>,

src/dynamo/expression/request-expression-builder.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { curry } from 'lodash'
22
import { Metadata } from '../../decorator/metadata'
33
import { ConditionalParamsHost } from '../operation-params.type'
4-
import { BaseRequest } from '../request/base.request'
4+
import { StandardRequest } from '../request/standard.request'
55
import { buildFilterExpression } from './condition-expression-builder'
66
import { addExpression } from './param-util'
77
import { ConditionExpressionDefinitionChain } from './type/condition-expression-definition-chain'
@@ -85,20 +85,20 @@ export function doAddCondition<T, R extends ConditionalParamsHost>(
8585
return request
8686
}
8787

88-
export function addPartitionKeyCondition<R extends BaseRequest<any, any>>(
88+
export function addPartitionKeyCondition<R extends StandardRequest<any, any, any>>(
8989
keyName: keyof any,
9090
keyValue: any,
9191
request: R,
9292
): R
9393

94-
export function addPartitionKeyCondition<T, R extends BaseRequest<T, any>>(
94+
export function addPartitionKeyCondition<T, R extends StandardRequest<T, any, any>>(
9595
keyName: keyof T,
9696
keyValue: any,
9797
request: R,
9898
metadata: Metadata<T>,
9999
): R
100100

101-
export function addPartitionKeyCondition<T, R extends BaseRequest<T, any>>(
101+
export function addPartitionKeyCondition<T, R extends StandardRequest<T, any, any>>(
102102
keyName: keyof T,
103103
keyValue: any,
104104
request: R,
@@ -121,14 +121,12 @@ export function updateDefinitionFunction<T>(attributePath: keyof T): UpdateExpre
121121
const f = (operation: UpdateActionDef) => {
122122
return (...values: any[]): UpdateExpressionDefinitionFunction => {
123123
const copy = [...values]
124-
const curried = curry<
125-
string,
124+
const curried = curry<string,
126125
UpdateActionDef,
127126
any[],
128127
string[] | undefined,
129128
Metadata<any> | undefined,
130-
UpdateExpression
131-
>(buildUpdateExpression)
129+
UpdateExpression>(buildUpdateExpression)
132130

133131
return curried(<string>attributePath, operation, copy)
134132
}

0 commit comments

Comments
 (0)