@exabugs/dynamodb-client 1.3.33 → 1.3.35

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 CHANGED
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.3.35] - 2026-01-08
11
+
12
+ ### Fixed
13
+
14
+ - **findOneのfilter対応**: `findOne`操作が任意のフィールドでの検索をサポート
15
+ - `findOne({ token: 'xxx' })`が正しく動作するように修正
16
+ - `convertFindOneParams`が`filter.id`以外のフィールドを受け入れるように修正
17
+ - `handleFindOne`が`filter`パラメータをサポート(`find`操作で検索して最初の結果を返す)
18
+ - `filter.id`が存在する場合は従来通りGetItemで取得(後方互換性)
19
+ - `filter`が指定された場合は`find`操作で検索(新しいfilter対応)
20
+ - デバイス登録時の既存デバイスチェック(`findOne({ token })`)が正しく動作
21
+
22
+ ## [1.3.34] - 2026-01-08
23
+
24
+ ### Fixed
25
+
26
+ - **$setOnInsert対応修正**: `convertUpdateOneParams`が`$setOnInsert`を正しく処理するように修正
27
+ - デバイス登録時に`token`と`userId`が保存されない問題を解決
28
+ - `$set`のみを抽出していたが、`$setOnInsert`も含めるように修正
29
+ - UpdateOperators形式(`{ $set, $setOnInsert }`)の場合、update全体を`handleUpdateOne`に渡す
30
+ - `handleUpsertCreate`で`$set`と`$setOnInsert`を正しくマージできるようになった
31
+
10
32
  ## [1.3.33] - 2026-01-08
11
33
 
12
34
  ### Fixed
@@ -1,5 +1,5 @@
1
- // @exabugs/dynamodb-client v1.3.33
2
- // Built: 2026-01-08T12:17:07.872Z
1
+ // @exabugs/dynamodb-client v1.3.35
2
+ // Built: 2026-01-08T13:48:58.427Z
3
3
  "use strict";
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
@@ -32281,40 +32281,68 @@ var import_lib_dynamodb9 = __toESM(require_dist_cjs66(), 1);
32281
32281
  init_shared();
32282
32282
  init_shadow();
32283
32283
  init_dynamodb3();
32284
+ init_find();
32284
32285
  var logger14 = createLogger({ service: "records-lambda" });
32285
32286
  async function handleFindOne(resource, params, requestId) {
32286
- const { id } = params;
32287
- logger14.debug("Executing findOne", {
32288
- requestId,
32289
- resource,
32290
- id
32291
- });
32292
- const dbClient2 = getDBClient();
32293
- const tableName = getTableName();
32294
- const sk = generateMainRecordSK2(id);
32295
- const result = await executeDynamoDBOperation(
32296
- () => dbClient2.send(
32297
- new import_lib_dynamodb9.GetCommand({
32298
- TableName: tableName,
32299
- Key: {
32300
- PK: resource,
32301
- SK: sk
32302
- },
32303
- ConsistentRead: true
32304
- })
32305
- ),
32306
- "GetItem"
32307
- );
32308
- if (!result.Item) {
32309
- throw new ItemNotFoundError(`Record not found: ${id}`, { resource, id });
32287
+ const { id, filter } = params;
32288
+ if (id) {
32289
+ logger14.debug("Executing findOne by id", {
32290
+ requestId,
32291
+ resource,
32292
+ id
32293
+ });
32294
+ const dbClient2 = getDBClient();
32295
+ const tableName = getTableName();
32296
+ const sk = generateMainRecordSK2(id);
32297
+ const result = await executeDynamoDBOperation(
32298
+ () => dbClient2.send(
32299
+ new import_lib_dynamodb9.GetCommand({
32300
+ TableName: tableName,
32301
+ Key: {
32302
+ PK: resource,
32303
+ SK: sk
32304
+ },
32305
+ ConsistentRead: true
32306
+ })
32307
+ ),
32308
+ "GetItem"
32309
+ );
32310
+ if (!result.Item) {
32311
+ throw new ItemNotFoundError(`Record not found: ${id}`, { resource, id });
32312
+ }
32313
+ const record = extractCleanRecord(result.Item);
32314
+ logger14.info("findOne by id succeeded", {
32315
+ requestId,
32316
+ resource,
32317
+ id
32318
+ });
32319
+ return record;
32310
32320
  }
32311
- const record = extractCleanRecord(result.Item);
32312
- logger14.info("findOne succeeded", {
32313
- requestId,
32314
- resource,
32315
- id
32316
- });
32317
- return record;
32321
+ if (filter) {
32322
+ logger14.debug("Executing findOne by filter", {
32323
+ requestId,
32324
+ resource,
32325
+ filter
32326
+ });
32327
+ const findResult = await handleFind(
32328
+ resource,
32329
+ {
32330
+ filter,
32331
+ pagination: { perPage: 1 }
32332
+ },
32333
+ requestId
32334
+ );
32335
+ if (!findResult.items || findResult.items.length === 0) {
32336
+ throw new ItemNotFoundError(`Record not found with filter`, { resource, filter });
32337
+ }
32338
+ logger14.info("findOne by filter succeeded", {
32339
+ requestId,
32340
+ resource,
32341
+ filter
32342
+ });
32343
+ return findResult.items[0];
32344
+ }
32345
+ throw new Error("findOne requires either id or filter");
32318
32346
  }
32319
32347
  __name(handleFindOne, "handleFindOne");
32320
32348
 
@@ -33219,11 +33247,14 @@ function convertFindParams(mongoParams) {
33219
33247
  }
33220
33248
  __name(convertFindParams, "convertFindParams");
33221
33249
  function convertFindOneParams(mongoParams) {
33222
- const id = typeof mongoParams.filter?.id === "string" ? mongoParams.filter.id : void 0;
33223
- if (!id) {
33224
- throw new Error("findOne requires filter.id");
33250
+ if (!mongoParams.filter) {
33251
+ throw new Error("findOne requires filter");
33225
33252
  }
33226
- return { id };
33253
+ const id = typeof mongoParams.filter.id === "string" ? mongoParams.filter.id : void 0;
33254
+ if (id) {
33255
+ return { id };
33256
+ }
33257
+ return { filter: mongoParams.filter };
33227
33258
  }
33228
33259
  __name(convertFindOneParams, "convertFindOneParams");
33229
33260
  function convertFindManyParams(mongoParams) {
@@ -33245,7 +33276,16 @@ function convertUpdateOneParams(mongoParams) {
33245
33276
  if (!mongoParams.filter) {
33246
33277
  throw new Error("updateOne requires filter");
33247
33278
  }
33248
- const updateData = mongoParams.update && typeof mongoParams.update === "object" ? "$set" in mongoParams.update ? mongoParams.update.$set || {} : mongoParams.update : {};
33279
+ let updateData;
33280
+ if (mongoParams.update && typeof mongoParams.update === "object") {
33281
+ if ("$set" in mongoParams.update || "$setOnInsert" in mongoParams.update) {
33282
+ updateData = mongoParams.update;
33283
+ } else {
33284
+ updateData = mongoParams.update;
33285
+ }
33286
+ } else {
33287
+ updateData = {};
33288
+ }
33249
33289
  const id = typeof mongoParams.filter.id === "string" ? mongoParams.filter.id : void 0;
33250
33290
  if (id) {
33251
33291
  return {
@@ -34798,7 +34838,7 @@ async function handler(event) {
34798
34838
  return createCorsResponse(HTTP_STATUS.OK);
34799
34839
  }
34800
34840
  if (event.requestContext.http.method === "GET" && event.requestContext.http.path === "/version") {
34801
- const version = "1.3.33";
34841
+ const version = "1.3.35";
34802
34842
  return createSuccessResponse({ version, timestamp: (/* @__PURE__ */ new Date()).toISOString() }, requestId);
34803
34843
  }
34804
34844
  if (event.requestContext.http.method !== "POST") {