Skip to content

Commit ef7fed0

Browse files
style(tslint): reformat code
1 parent 9350add commit ef7fed0

File tree

8 files changed

+78
-78
lines changed

8 files changed

+78
-78
lines changed

src/dynamo/dynamo-store.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@ import {
1818
import { BatchWriteSingleTableRequest } from './request/batchwritesingletable/batch-write-single-table.request'
1919

2020
export class DynamoStore<T> {
21-
private readonly logger: Logger
22-
private readonly dynamoRx: DynamoRx
21+
22+
get dynamoDb(): DynamoDB {
23+
return this.dynamoRx.dynamoDb
24+
}
2325

2426
readonly tableName: string
27+
private readonly logger: Logger
28+
private readonly dynamoRx: DynamoRx
2529

2630
constructor(
2731
private modelClazz: ModelConstructor<T>,
@@ -32,10 +36,6 @@ export class DynamoStore<T> {
3236
this.logger.debug('instance created')
3337
}
3438

35-
get dynamoDb(): DynamoDB {
36-
return this.dynamoRx.dynamoDb
37-
}
38-
3939
put(item: T): PutRequest<T> {
4040
return new PutRequest(this.dynamoRx, this.modelClazz, item)
4141
}

src/dynamo/request/batchgetsingletable/batch-get-single-table.request.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ const DEFAULT_TIME_SLOT = 1000
1717

1818
// TODO add support for indexes
1919
export class BatchGetSingleTableRequest<T> {
20-
private readonly logger: Logger
2120
readonly dynamoRx: DynamoRx
2221
readonly params: BatchGetItemInput
2322
readonly modelClazz: ModelConstructor<T>
2423
readonly tableName: string
2524

2625
readonly metadata: Metadata<T>
26+
private readonly logger: Logger
2727

2828
constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>, keys: Array<Partial<T>>) {
2929
this.logger = createLogger('dynamo.request.BatchGetSingleTableRequest', modelClazz)
@@ -59,6 +59,25 @@ export class BatchGetSingleTableRequest<T> {
5959
return this
6060
}
6161

62+
execNoMap(backoffTimer = randomExponentialBackoffTimer, throttleTimeSlot = DEFAULT_TIME_SLOT): Observable<DynamoDB.BatchGetItemOutput> {
63+
return this.fetch(backoffTimer, throttleTimeSlot)
64+
}
65+
66+
execFullResponse(backoffTimer = randomExponentialBackoffTimer, throttleTimeSlot = DEFAULT_TIME_SLOT): Observable<BatchGetSingleTableResponse<T>> {
67+
return this.fetch(backoffTimer, throttleTimeSlot).pipe(
68+
map(this.mapResponse),
69+
tap(response => this.logger.debug('mapped items', response.Items)),
70+
)
71+
}
72+
73+
exec(backoffTimer = randomExponentialBackoffTimer, throttleTimeSlot = DEFAULT_TIME_SLOT): Observable<T[]> {
74+
return this.fetch(backoffTimer, throttleTimeSlot).pipe(
75+
map(this.mapResponse),
76+
map(r => r.Items),
77+
tap(items => this.logger.debug('mapped items', items)),
78+
)
79+
}
80+
6281
private mapResponse = (response: DynamoDB.BatchGetItemOutput) => {
6382
let items: T[] = []
6483
if (response.Responses && Object.keys(response.Responses).length && response.Responses[this.tableName]) {
@@ -82,23 +101,4 @@ export class BatchGetSingleTableRequest<T> {
82101
)
83102
}
84103

85-
execNoMap(backoffTimer = randomExponentialBackoffTimer, throttleTimeSlot = DEFAULT_TIME_SLOT): Observable<DynamoDB.BatchGetItemOutput> {
86-
return this.fetch(backoffTimer, throttleTimeSlot)
87-
}
88-
89-
execFullResponse(backoffTimer = randomExponentialBackoffTimer, throttleTimeSlot = DEFAULT_TIME_SLOT): Observable<BatchGetSingleTableResponse<T>> {
90-
return this.fetch(backoffTimer, throttleTimeSlot).pipe(
91-
map(this.mapResponse),
92-
tap(response => this.logger.debug('mapped items', response.Items)),
93-
)
94-
}
95-
96-
exec(backoffTimer = randomExponentialBackoffTimer, throttleTimeSlot = DEFAULT_TIME_SLOT): Observable<T[]> {
97-
return this.fetch(backoffTimer, throttleTimeSlot).pipe(
98-
map(this.mapResponse),
99-
map(r => r.Items),
100-
tap(items => this.logger.debug('mapped items', items)),
101-
)
102-
}
103-
104104
}

src/dynamo/request/batchwritesingletable/batch-write-single-table.request.ts

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import { BatchWriteSingleTableResponse } from './batch-write-single-table.respon
1313
const MAX_BATCH_WRITE_ITEMS = 25
1414

1515
export class BatchWriteSingleTableRequest<T> {
16-
private readonly logger: Logger
1716

1817
private get toKey(): (item: T) => Attributes {
1918
if (!this.keyFn) {
@@ -22,12 +21,13 @@ export class BatchWriteSingleTableRequest<T> {
2221
return this.keyFn
2322
}
2423

25-
private keyFn: any
26-
2724
readonly dynamoRx: DynamoRx
2825
readonly modelClazz: ModelConstructor<T>
2926
readonly tableName: string
3027
readonly itemsToProcess: WriteRequests
28+
private readonly logger: Logger
29+
30+
private keyFn: any
3131

3232
constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>) {
3333
this.logger = createLogger('dynamo.request.BatchWriteSingleTableRequest', modelClazz)
@@ -56,6 +56,34 @@ export class BatchWriteSingleTableRequest<T> {
5656
return this
5757
}
5858

59+
// fixme backoff time is resetted for every request.. :/
60+
/**
61+
*
62+
* @param backoffTimer generator for how much timeSlots should be waited before requesting next batch. only used when capacity was exceeded. default randomExponentialBackoffTimer
63+
* @param throttleTimeSlot defines how long one timeSlot is for throttling, default 1 second
64+
*/
65+
exec(backoffTimer = randomExponentialBackoffTimer, throttleTimeSlot = 1000): Observable<void> {
66+
this.logger.debug('starting batchWriteItem')
67+
const rBoT = backoffTimer()
68+
return this.execNextBatch().pipe(
69+
mergeMap((r: BatchWriteSingleTableResponse) => {
70+
if (r.capacityExceeded) {
71+
const backoffTime = rBoT.next().value * throttleTimeSlot
72+
this.logger.info(`wait ${backoffTime} ms until next request`, { backoffTime })
73+
return of(r).pipe(delay(backoffTime))
74+
}
75+
return of(r)
76+
}),
77+
mergeMap((r: BatchWriteSingleTableResponse) => {
78+
if (r.remainingItems > 0) {
79+
return this.exec()
80+
} else {
81+
return of()
82+
}
83+
}),
84+
)
85+
}
86+
5987
private execNextBatch(): Observable<BatchWriteSingleTableResponse> {
6088
const batch = this.itemsToProcess.splice(0, MAX_BATCH_WRITE_ITEMS)
6189
const batchWriteItemInput: BatchWriteItemInput = {
@@ -86,32 +114,4 @@ export class BatchWriteSingleTableRequest<T> {
86114
}),
87115
)
88116
}
89-
90-
// fixme backoff time is resetted for every request.. :/
91-
/**
92-
*
93-
* @param backoffTimer generator for how much timeSlots should be waited before requesting next batch. only used when capacity was exceeded. default randomExponentialBackoffTimer
94-
* @param throttleTimeSlot defines how long one timeSlot is for throttling, default 1 second
95-
*/
96-
exec(backoffTimer = randomExponentialBackoffTimer, throttleTimeSlot = 1000): Observable<void> {
97-
this.logger.debug('starting batchWriteItem')
98-
const rBoT = backoffTimer()
99-
return this.execNextBatch().pipe(
100-
mergeMap((r: BatchWriteSingleTableResponse) => {
101-
if (r.capacityExceeded) {
102-
const backoffTime = rBoT.next().value * throttleTimeSlot
103-
this.logger.info(`wait ${backoffTime} ms until next request`, { backoffTime })
104-
return of(r).pipe(delay(backoffTime))
105-
}
106-
return of(r)
107-
}),
108-
mergeMap((r: BatchWriteSingleTableResponse) => {
109-
if (r.remainingItems > 0) {
110-
return this.exec()
111-
} else {
112-
return of()
113-
}
114-
}),
115-
)
116-
}
117117
}

src/dynamo/request/get/get.request.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import { BaseRequest } from '../base.request'
1313
import { GetResponse } from './get.response'
1414

1515
export class GetRequest<T> extends BaseRequest<T, any> {
16-
private readonly logger: Logger
1716
readonly params: DynamoDB.GetItemInput
17+
private readonly logger: Logger
1818

1919
constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>, partitionKey: any, sortKey?: any) {
2020
super(dynamoRx, modelClazz)

src/dynamo/request/query/query.request.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ export class QueryRequest<T> extends Request<T, QueryRequest<T>, QueryInput, Que
1818
this.logger = createLogger('dynamo.request.QueryRequest', modelClazz)
1919
}
2020

21-
private mapFromDb = (queryResponse: QueryOutput) => {
22-
const response: QueryResponse<T> = <any>{ ...queryResponse }
23-
response.Items = (queryResponse.Items || []).map(item => fromDb(<Attributes<T>>item, this.modelClazz))
24-
25-
return response
26-
}
27-
2821
wherePartitionKey(partitionKeyValue: any): QueryRequest<T> {
2922
let partitionKey: keyof T
3023
if (this.params.IndexName) {
@@ -136,4 +129,11 @@ export class QueryRequest<T> extends Request<T, QueryRequest<T>, QueryInput, Que
136129
)
137130
}
138131

132+
private mapFromDb = (queryResponse: QueryOutput) => {
133+
const response: QueryResponse<T> = <any>{ ...queryResponse }
134+
response.Items = (queryResponse.Items || []).map(item => fromDb(<Attributes<T>>item, this.modelClazz))
135+
136+
return response
137+
}
138+
139139
}

src/dynamo/request/scan/scan.request.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,6 @@ export class ScanRequest<T> extends Request<T, ScanRequest<T>, ScanInput, ScanRe
1616
this.logger = createLogger('dynamo.request.ScanRequest', modelClazz)
1717
}
1818

19-
private mapFromDb = (output: ScanOutput) => {
20-
const response: ScanResponse<T> = <any>{ ...output }
21-
if (output.Items) {
22-
response.Items = output.Items.map(item => fromDb(<Attributes<T>>item, this.modelClazz))
23-
}
24-
return response
25-
}
26-
2719
execNoMap(): Observable<ScanOutput> {
2820
this.logger.debug('request (noMap)', this.params)
2921
return this.dynamoRx.scan(this.params)
@@ -77,4 +69,12 @@ export class ScanRequest<T> extends Request<T, ScanRequest<T>, ScanInput, ScanRe
7769
)
7870
}
7971

72+
private mapFromDb = (output: ScanOutput) => {
73+
const response: ScanResponse<T> = <any>{ ...output }
74+
if (output.Items) {
75+
response.Items = output.Items.map(item => fromDb(<Attributes<T>>item, this.modelClazz))
76+
}
77+
return response
78+
}
79+
8080
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { TransactOperation } from './transact-operation.type'
66

77

88
export class TransactWriteRequest {
9-
private readonly dynamoRx: DynamoRx
109
readonly params: DynamoDB.TransactWriteItemsInput
10+
private readonly dynamoRx: DynamoRx
1111

1212
constructor() {
1313
this.dynamoRx = new DynamoRx()

tslint.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ rules:
1111
true,
1212
{
1313
order: [
14-
"public-instance-field",
15-
"private-instance-field",
1614
"public-static-field",
1715
"private-static-field",
18-
"instance-field",
19-
"static-method",
16+
"public-instance-field",
17+
"private-instance-field",
18+
"public-static-method",
19+
"private-static-method",
2020
"constructor",
2121
"public-instance-method",
2222
"private-instance-method",

0 commit comments

Comments
 (0)