@exabugs/dynamodb-client 1.3.42 → 1.3.44
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.
- package/CHANGELOG.md +29 -0
- package/README.md +153 -6
- package/dist/client/Collection.d.ts.map +1 -1
- package/dist/client/Collection.js +9 -3
- package/dist/client/Collection.js.map +1 -1
- package/dist/client/FindCursor.d.ts +28 -1
- package/dist/client/FindCursor.d.ts.map +1 -1
- package/dist/client/FindCursor.js +34 -1
- package/dist/client/FindCursor.js.map +1 -1
- package/dist/server/handler.cjs +274 -39
- package/dist/server/handler.cjs.map +3 -3
- package/dist/server/operations/deleteMany.d.ts.map +1 -1
- package/dist/server/operations/deleteMany.js +26 -1
- package/dist/server/operations/deleteMany.js.map +1 -1
- package/dist/server/operations/deleteOne.d.ts.map +1 -1
- package/dist/server/operations/deleteOne.js +8 -2
- package/dist/server/operations/deleteOne.js.map +1 -1
- package/dist/server/operations/find/idQuery.d.ts.map +1 -1
- package/dist/server/operations/find/idQuery.js +12 -0
- package/dist/server/operations/find/idQuery.js.map +1 -1
- package/dist/server/operations/find/nearQuery.d.ts.map +1 -1
- package/dist/server/operations/find/nearQuery.js +9 -0
- package/dist/server/operations/find/nearQuery.js.map +1 -1
- package/dist/server/operations/find/shadowQuery.d.ts.map +1 -1
- package/dist/server/operations/find/shadowQuery.js +23 -5
- package/dist/server/operations/find/shadowQuery.js.map +1 -1
- package/dist/server/operations/insertMany.d.ts.map +1 -1
- package/dist/server/operations/insertMany.js +16 -2
- package/dist/server/operations/insertMany.js.map +1 -1
- package/dist/server/operations/insertOne.d.ts.map +1 -1
- package/dist/server/operations/insertOne.js +5 -1
- package/dist/server/operations/insertOne.js.map +1 -1
- package/dist/server/operations/updateMany.d.ts.map +1 -1
- package/dist/server/operations/updateMany.js +25 -1
- package/dist/server/operations/updateMany.js.map +1 -1
- package/dist/server/operations/updateOne.d.ts.map +1 -1
- package/dist/server/operations/updateOne.js +10 -2
- package/dist/server/operations/updateOne.js.map +1 -1
- package/dist/server/query/nearSearch.d.ts.map +1 -1
- package/dist/server/query/nearSearch.js +62 -0
- package/dist/server/query/nearSearch.js.map +1 -1
- package/dist/server/types.d.ts +6 -5
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +0 -5
- package/dist/server/types.js.map +1 -1
- package/dist/server/utils/cost-tracker.d.ts +62 -0
- package/dist/server/utils/cost-tracker.d.ts.map +1 -0
- package/dist/server/utils/cost-tracker.js +76 -0
- package/dist/server/utils/cost-tracker.js.map +1 -0
- package/dist/shared/types/consumed-capacity.d.ts +36 -0
- package/dist/shared/types/consumed-capacity.d.ts.map +1 -0
- package/dist/shared/types/consumed-capacity.js +2 -0
- package/dist/shared/types/consumed-capacity.js.map +1 -0
- package/dist/shared/types/index.d.ts +6 -4
- package/dist/shared/types/index.d.ts.map +1 -1
- package/dist/shared/types/index.js +2 -7
- package/dist/shared/types/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.3.44] - 2026-01-17
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **コスト追跡機能**: DynamoDB操作のRCU/WCU消費量を追跡・集計
|
|
15
|
+
- すべてのDynamoDB操作で`ReturnConsumedCapacity: 'TOTAL'`を設定
|
|
16
|
+
- `CostTracker`クラスでコスト情報を収集・集計
|
|
17
|
+
- `ConsumedCapacity`型と`AggregatedCost`型を追加
|
|
18
|
+
- MongoDB-likeインターフェースのレスポンスに`consumedCapacity`フィールドを追加
|
|
19
|
+
- `FindCursor.getConsumedCapacity()`メソッドを追加
|
|
20
|
+
- 完全なユニットテスト・統合テスト・エッジケーステストを実装(全テスト成功)
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **レスポンス型の拡張**: すべての操作レスポンスに`consumedCapacity?`フィールドを追加
|
|
25
|
+
- `InsertOneResult`, `InsertManyResult`, `UpdateResult`, `DeleteResult`
|
|
26
|
+
- `FindResult`(HTTP APIレスポンス)
|
|
27
|
+
- 後方互換性100%維持(オプショナルフィールド)
|
|
28
|
+
|
|
29
|
+
## [1.3.43] - 2026-01-17
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- **$near検索の最適化**: maxDistanceによる早期終了条件を追加
|
|
34
|
+
- 候補数による早期終了: maxDistance内の候補がlimit件以上見つかったら終了
|
|
35
|
+
- カバー範囲による早期終了: 現在の精度での9ブロック検索範囲がmaxDistanceを完全にカバーしたら終了
|
|
36
|
+
- GEOHASH_COVERAGE定義を拡張: Precision 2-8のカバー範囲を定義(従来は6-8のみ)
|
|
37
|
+
- 不要な精度緩和を削減し、検索パフォーマンスを向上
|
|
38
|
+
|
|
10
39
|
## [1.3.42] - 2026-01-15
|
|
11
40
|
|
|
12
41
|
### Added
|
package/README.md
CHANGED
|
@@ -253,12 +253,7 @@ The easiest way to deploy is using the [dynamodb-client-example](https://github.
|
|
|
253
253
|
git clone https://github.com/exabugs/dynamodb-client-example.git
|
|
254
254
|
cd dynamodb-client-example
|
|
255
255
|
|
|
256
|
-
|
|
257
|
-
make deploy-dev
|
|
258
|
-
|
|
259
|
-
# Deploy to other environments
|
|
260
|
-
make deploy-stg # Staging
|
|
261
|
-
make deploy-prd # Production
|
|
256
|
+
make infra-apply
|
|
262
257
|
```
|
|
263
258
|
|
|
264
259
|
See the [example project's documentation](https://github.com/exabugs/dynamodb-client-example) for detailed deployment instructions.
|
|
@@ -399,6 +394,158 @@ const record = {
|
|
|
399
394
|
|
|
400
395
|
---
|
|
401
396
|
|
|
397
|
+
## 💰 Cost Tracking
|
|
398
|
+
|
|
399
|
+
### Overview
|
|
400
|
+
|
|
401
|
+
DynamoDB Client SDK provides built-in cost tracking for all DynamoDB operations. This feature helps you monitor and optimize your DynamoDB usage by tracking Read Capacity Units (RCU) and Write Capacity Units (WCU) consumed by each operation.
|
|
402
|
+
|
|
403
|
+
### Features
|
|
404
|
+
|
|
405
|
+
- **Automatic Tracking**: All operations automatically include consumed capacity information
|
|
406
|
+
- **Aggregated Costs**: Multiple operations (pagination, bulk operations) are automatically aggregated
|
|
407
|
+
- **Zero Overhead**: Minimal performance impact (< 5ms)
|
|
408
|
+
- **Type Safe**: Full TypeScript support with `AggregatedCost` type
|
|
409
|
+
|
|
410
|
+
### Usage Examples
|
|
411
|
+
|
|
412
|
+
#### Single Operations
|
|
413
|
+
|
|
414
|
+
All single operations (`insertOne`, `updateOne`, `deleteOne`) return consumed capacity information:
|
|
415
|
+
|
|
416
|
+
```typescript
|
|
417
|
+
// Insert operation
|
|
418
|
+
const result = await collection.insertOne({
|
|
419
|
+
title: 'New Article',
|
|
420
|
+
content: 'Content here...',
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
console.log('Inserted ID:', result.insertedId);
|
|
424
|
+
console.log('Cost:', result.consumedCapacity);
|
|
425
|
+
// Output: { totalRCU: 0, totalWCU: 1.0, operationCount: 1 }
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
```typescript
|
|
429
|
+
// Update operation
|
|
430
|
+
const result = await collection.updateOne(
|
|
431
|
+
{ id: '01HQXYZ123' },
|
|
432
|
+
{ $set: { title: 'Updated Title' } }
|
|
433
|
+
);
|
|
434
|
+
|
|
435
|
+
console.log('Modified:', result.modifiedCount);
|
|
436
|
+
console.log('Cost:', result.consumedCapacity);
|
|
437
|
+
// Output: { totalRCU: 0.5, totalWCU: 1.0, operationCount: 1 }
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
```typescript
|
|
441
|
+
// Delete operation
|
|
442
|
+
const result = await collection.deleteOne({ id: '01HQXYZ123' });
|
|
443
|
+
|
|
444
|
+
console.log('Deleted:', result.deletedCount);
|
|
445
|
+
console.log('Cost:', result.consumedCapacity);
|
|
446
|
+
// Output: { totalRCU: 0.5, totalWCU: 1.0, operationCount: 1 }
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
#### Bulk Operations
|
|
450
|
+
|
|
451
|
+
Bulk operations automatically aggregate costs across all chunks:
|
|
452
|
+
|
|
453
|
+
```typescript
|
|
454
|
+
// Insert many documents
|
|
455
|
+
const result = await collection.insertMany([
|
|
456
|
+
{ title: 'Article 1', content: '...' },
|
|
457
|
+
{ title: 'Article 2', content: '...' },
|
|
458
|
+
{ title: 'Article 3', content: '...' },
|
|
459
|
+
// ... 100 documents
|
|
460
|
+
]);
|
|
461
|
+
|
|
462
|
+
console.log('Inserted:', result.insertedCount);
|
|
463
|
+
console.log('Cost:', result.consumedCapacity);
|
|
464
|
+
// Output: { totalRCU: 0, totalWCU: 100.0, operationCount: 4 }
|
|
465
|
+
// Note: 100 documents processed in 4 chunks (25 per chunk)
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
```typescript
|
|
469
|
+
// Update many documents
|
|
470
|
+
const result = await collection.updateMany({ status: 'draft' }, { $set: { status: 'published' } });
|
|
471
|
+
|
|
472
|
+
console.log('Modified:', result.modifiedCount);
|
|
473
|
+
console.log('Cost:', result.consumedCapacity);
|
|
474
|
+
// Output: { totalRCU: 25.0, totalWCU: 50.0, operationCount: 10 }
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
#### Find Operations with Pagination
|
|
478
|
+
|
|
479
|
+
Find operations aggregate costs across all pages:
|
|
480
|
+
|
|
481
|
+
```typescript
|
|
482
|
+
// Find with pagination
|
|
483
|
+
const cursor = collection.find({ status: 'active' }).limit(100);
|
|
484
|
+
const results = await cursor.toArray();
|
|
485
|
+
|
|
486
|
+
// Get aggregated cost for all pages
|
|
487
|
+
const cost = await cursor.getConsumedCapacity();
|
|
488
|
+
|
|
489
|
+
console.log('Found:', results.length);
|
|
490
|
+
console.log('Cost:', cost);
|
|
491
|
+
// Output: { totalRCU: 15.5, totalWCU: 0, operationCount: 3 }
|
|
492
|
+
// Note: 3 pages fetched to retrieve all results
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### Cost Information Structure
|
|
496
|
+
|
|
497
|
+
The `consumedCapacity` field contains:
|
|
498
|
+
|
|
499
|
+
```typescript
|
|
500
|
+
interface AggregatedCost {
|
|
501
|
+
/** Total Read Capacity Units consumed */
|
|
502
|
+
totalRCU: number;
|
|
503
|
+
|
|
504
|
+
/** Total Write Capacity Units consumed */
|
|
505
|
+
totalWCU: number;
|
|
506
|
+
|
|
507
|
+
/** Number of DynamoDB operations performed */
|
|
508
|
+
operationCount: number;
|
|
509
|
+
}
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
### Cost Optimization Tips
|
|
513
|
+
|
|
514
|
+
1. **Monitor High-Cost Operations**: Operations with `totalRCU > 100` or `totalWCU > 50` may need optimization
|
|
515
|
+
2. **Use Pagination**: Large result sets are automatically paginated to avoid high costs
|
|
516
|
+
3. **Batch Operations**: Use `insertMany`, `updateMany`, `deleteMany` for bulk operations
|
|
517
|
+
4. **Shadow Records**: Efficient sorting without expensive Global Secondary Indexes
|
|
518
|
+
|
|
519
|
+
### Logging
|
|
520
|
+
|
|
521
|
+
Cost information is automatically logged for all operations:
|
|
522
|
+
|
|
523
|
+
```typescript
|
|
524
|
+
// Info log for normal operations
|
|
525
|
+
logger.info('Operation completed', {
|
|
526
|
+
operation: 'find',
|
|
527
|
+
resource: 'articles',
|
|
528
|
+
consumedCapacity: { totalRCU: 5.5, totalWCU: 0, operationCount: 2 },
|
|
529
|
+
});
|
|
530
|
+
|
|
531
|
+
// Warning log for high-cost operations
|
|
532
|
+
logger.warn('High cost operation detected', {
|
|
533
|
+
operation: 'updateMany',
|
|
534
|
+
resource: 'articles',
|
|
535
|
+
consumedCapacity: { totalRCU: 150.0, totalWCU: 200.0, operationCount: 50 },
|
|
536
|
+
});
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
### Backward Compatibility
|
|
540
|
+
|
|
541
|
+
Cost tracking is fully backward compatible:
|
|
542
|
+
|
|
543
|
+
- Existing code works without changes
|
|
544
|
+
- `consumedCapacity` field is optional
|
|
545
|
+
- No breaking changes to existing APIs
|
|
546
|
+
|
|
547
|
+
---
|
|
548
|
+
|
|
402
549
|
## 🤝 Contributing
|
|
403
550
|
|
|
404
551
|
We welcome contributions!
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,11 +114,12 @@ export class Collection {
|
|
|
114
114
|
return {
|
|
115
115
|
acknowledged: true,
|
|
116
116
|
insertedId: result.insertedId,
|
|
117
|
+
consumedCapacity: result.consumedCapacity,
|
|
117
118
|
};
|
|
118
119
|
}
|
|
119
120
|
async insertMany(documents) {
|
|
120
121
|
const response = await this.request('insertMany', { documents });
|
|
121
|
-
// Records Lambdaは統一形式 { count, successIds, failedIds, errors } を返す
|
|
122
|
+
// Records Lambdaは統一形式 { count, successIds, failedIds, errors, consumedCapacity } を返す
|
|
122
123
|
// MongoDB互換形式に変換
|
|
123
124
|
const result = response;
|
|
124
125
|
return {
|
|
@@ -127,6 +128,7 @@ export class Collection {
|
|
|
127
128
|
insertedIds: result.successIds || {},
|
|
128
129
|
failedIds: result.failedIds,
|
|
129
130
|
errors: result.errors,
|
|
131
|
+
consumedCapacity: result.consumedCapacity,
|
|
130
132
|
};
|
|
131
133
|
}
|
|
132
134
|
async updateOne(filter, update, options) {
|
|
@@ -139,11 +141,12 @@ export class Collection {
|
|
|
139
141
|
matchedCount: upsertedId ? 0 : 1, // upsertで新規作成の場合は0
|
|
140
142
|
modifiedCount: upsertedId ? 0 : 1, // upsertで新規作成の場合は0
|
|
141
143
|
upsertedId,
|
|
144
|
+
consumedCapacity: result.consumedCapacity,
|
|
142
145
|
};
|
|
143
146
|
}
|
|
144
147
|
async updateMany(filter, update, options) {
|
|
145
148
|
const response = await this.request('updateMany', { filter, update, options });
|
|
146
|
-
// Records Lambdaは統一形式 { count, successIds, failedIds, errors } を返す
|
|
149
|
+
// Records Lambdaは統一形式 { count, successIds, failedIds, errors, consumedCapacity } を返す
|
|
147
150
|
// MongoDB互換形式に変換
|
|
148
151
|
const result = response;
|
|
149
152
|
const successCount = Object.keys(result.successIds || {}).length;
|
|
@@ -152,6 +155,7 @@ export class Collection {
|
|
|
152
155
|
acknowledged: true,
|
|
153
156
|
matchedCount: successCount + failedCount, // 成功 + 失敗の合計
|
|
154
157
|
modifiedCount: result.count || 0, // 実際に更新された件数
|
|
158
|
+
consumedCapacity: result.consumedCapacity,
|
|
155
159
|
};
|
|
156
160
|
}
|
|
157
161
|
async deleteOne(filter) {
|
|
@@ -160,16 +164,18 @@ export class Collection {
|
|
|
160
164
|
return {
|
|
161
165
|
acknowledged: true,
|
|
162
166
|
deletedCount: result.deletedCount,
|
|
167
|
+
consumedCapacity: result.consumedCapacity,
|
|
163
168
|
};
|
|
164
169
|
}
|
|
165
170
|
async deleteMany(filter) {
|
|
166
171
|
const response = await this.request('deleteMany', { filter });
|
|
167
|
-
// Records Lambdaは統一形式 { count, successIds, failedIds, errors } を返す
|
|
172
|
+
// Records Lambdaは統一形式 { count, successIds, failedIds, errors, consumedCapacity } を返す
|
|
168
173
|
// MongoDB互換形式に変換
|
|
169
174
|
const result = response;
|
|
170
175
|
return {
|
|
171
176
|
acknowledged: true,
|
|
172
177
|
deletedCount: result.count || 0, // 実際に削除された件数
|
|
178
|
+
consumedCapacity: result.consumedCapacity,
|
|
173
179
|
};
|
|
174
180
|
}
|
|
175
181
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Filter, FindOptions } from '../shared/index.js';
|
|
1
|
+
import type { AggregatedCost, Filter, FindOptions } from '../shared/index.js';
|
|
2
2
|
import type { AuthHeadersGetter } from './Collection.js';
|
|
3
3
|
import type { ClientOptions } from './DynamoClient.js';
|
|
4
4
|
/**
|
|
@@ -38,6 +38,7 @@ export declare class FindCursor<TSchema extends {
|
|
|
38
38
|
private executed;
|
|
39
39
|
private results;
|
|
40
40
|
private pageInfo?;
|
|
41
|
+
private consumedCapacity?;
|
|
41
42
|
/**
|
|
42
43
|
* FindCursorを作成
|
|
43
44
|
*
|
|
@@ -168,5 +169,31 @@ export declare class FindCursor<TSchema extends {
|
|
|
168
169
|
hasPreviousPage: boolean;
|
|
169
170
|
nextToken?: string;
|
|
170
171
|
}>;
|
|
172
|
+
/**
|
|
173
|
+
* コスト情報を取得
|
|
174
|
+
*
|
|
175
|
+
* クエリを実行し、DynamoDB操作のコスト情報を返します。
|
|
176
|
+
* RCU(Read Capacity Units)とWCU(Write Capacity Units)の消費量を確認できます。
|
|
177
|
+
*
|
|
178
|
+
* @returns コスト情報(未実行の場合はundefined)
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* const cursor = products
|
|
183
|
+
* .find({ status: 'active' })
|
|
184
|
+
* .sort({ price: 'desc' })
|
|
185
|
+
* .limit(10);
|
|
186
|
+
*
|
|
187
|
+
* const results = await cursor.toArray();
|
|
188
|
+
* const cost = await cursor.getConsumedCapacity();
|
|
189
|
+
*
|
|
190
|
+
* if (cost) {
|
|
191
|
+
* console.log(`Total RCU: ${cost.totalRCU}`);
|
|
192
|
+
* console.log(`Total WCU: ${cost.totalWCU}`);
|
|
193
|
+
* console.log(`Operations: ${cost.operationCount}`);
|
|
194
|
+
* }
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
getConsumedCapacity(): Promise<AggregatedCost | undefined>;
|
|
171
198
|
}
|
|
172
199
|
//# sourceMappingURL=FindCursor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindCursor.d.ts","sourceRoot":"","sources":["../../src/client/FindCursor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"FindCursor.d.ts","sourceRoot":"","sources":["../../src/client/FindCursor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAU,CACrB,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAC/F,YAAY,GAAG,OAAO;IAqBpB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,cAAc,CAAC;IA1BzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAyE;IAC1F,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAE1C;;;;;;;;;;;OAWG;gBAEO,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAC/B,OAAO,GAAE,WAAgB,EACjB,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,WAAW,CAAC,EAAE,YAAY,YAAA,EAC1B,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,cAAc,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,YAAA;IAK1D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI;IAKzD;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB;;;;;OAKG;YACW,OAAO;IAwFrB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOnC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAYF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,mBAAmB,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAMjE"}
|
|
@@ -30,6 +30,7 @@ export class FindCursor {
|
|
|
30
30
|
executed = false;
|
|
31
31
|
results = [];
|
|
32
32
|
pageInfo;
|
|
33
|
+
consumedCapacity;
|
|
33
34
|
/**
|
|
34
35
|
* FindCursorを作成
|
|
35
36
|
*
|
|
@@ -170,7 +171,7 @@ export class FindCursor {
|
|
|
170
171
|
throw new Error(`Request failed: ${error.message || response.statusText}`);
|
|
171
172
|
}
|
|
172
173
|
const result = (await response.json());
|
|
173
|
-
// Lambda からのレスポンス: { success: true, data: { items: [...], pageInfo: {...}, nextToken?: string } }
|
|
174
|
+
// Lambda からのレスポンス: { success: true, data: { items: [...], pageInfo: {...}, nextToken?: string, consumedCapacity?: {...} } }
|
|
174
175
|
this.results = result.data?.items || result.data?.documents || [];
|
|
175
176
|
this.pageInfo = result.data?.pageInfo
|
|
176
177
|
? {
|
|
@@ -179,6 +180,7 @@ export class FindCursor {
|
|
|
179
180
|
nextToken: result.data.nextToken, // nextTokenはpageInfoの外にある
|
|
180
181
|
}
|
|
181
182
|
: undefined;
|
|
183
|
+
this.consumedCapacity = result.data?.consumedCapacity;
|
|
182
184
|
this.executed = true;
|
|
183
185
|
}
|
|
184
186
|
catch (error) {
|
|
@@ -249,5 +251,36 @@ export class FindCursor {
|
|
|
249
251
|
hasPreviousPage: false,
|
|
250
252
|
});
|
|
251
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* コスト情報を取得
|
|
256
|
+
*
|
|
257
|
+
* クエリを実行し、DynamoDB操作のコスト情報を返します。
|
|
258
|
+
* RCU(Read Capacity Units)とWCU(Write Capacity Units)の消費量を確認できます。
|
|
259
|
+
*
|
|
260
|
+
* @returns コスト情報(未実行の場合はundefined)
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* ```typescript
|
|
264
|
+
* const cursor = products
|
|
265
|
+
* .find({ status: 'active' })
|
|
266
|
+
* .sort({ price: 'desc' })
|
|
267
|
+
* .limit(10);
|
|
268
|
+
*
|
|
269
|
+
* const results = await cursor.toArray();
|
|
270
|
+
* const cost = await cursor.getConsumedCapacity();
|
|
271
|
+
*
|
|
272
|
+
* if (cost) {
|
|
273
|
+
* console.log(`Total RCU: ${cost.totalRCU}`);
|
|
274
|
+
* console.log(`Total WCU: ${cost.totalWCU}`);
|
|
275
|
+
* console.log(`Operations: ${cost.operationCount}`);
|
|
276
|
+
* }
|
|
277
|
+
* ```
|
|
278
|
+
*/
|
|
279
|
+
async getConsumedCapacity() {
|
|
280
|
+
if (!this.executed) {
|
|
281
|
+
await this.execute();
|
|
282
|
+
}
|
|
283
|
+
return this.consumedCapacity;
|
|
284
|
+
}
|
|
252
285
|
}
|
|
253
286
|
//# sourceMappingURL=FindCursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindCursor.js","sourceRoot":"","sources":["../../src/client/FindCursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAKtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"FindCursor.js","sourceRoot":"","sources":["../../src/client/FindCursor.ts"],"names":[],"mappings":"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"}
|