@exabugs/dynamodb-client 1.3.23 → 1.3.27

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.
Files changed (29) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +1 -1
  3. package/dist/integrations/react-admin/components/ReferenceManyToManyField.d.ts +10 -0
  4. package/dist/integrations/react-admin/components/ReferenceManyToManyField.d.ts.map +1 -0
  5. package/dist/integrations/react-admin/components/ReferenceManyToManyField.js +149 -0
  6. package/dist/integrations/react-admin/components/ReferenceManyToManyField.js.map +1 -0
  7. package/dist/integrations/react-admin/components/ReferenceManyToManyInput.d.ts +10 -0
  8. package/dist/integrations/react-admin/components/ReferenceManyToManyInput.d.ts.map +1 -0
  9. package/dist/integrations/react-admin/components/ReferenceManyToManyInput.js +106 -0
  10. package/dist/integrations/react-admin/components/ReferenceManyToManyInput.js.map +1 -0
  11. package/dist/integrations/react-admin/components/index.d.ts +6 -0
  12. package/dist/integrations/react-admin/components/index.d.ts.map +1 -0
  13. package/dist/integrations/react-admin/components/index.js +6 -0
  14. package/dist/integrations/react-admin/components/index.js.map +1 -0
  15. package/dist/integrations/react-admin/dataProvider.d.ts.map +1 -1
  16. package/dist/integrations/react-admin/dataProvider.js +112 -3
  17. package/dist/integrations/react-admin/dataProvider.js.map +1 -1
  18. package/dist/integrations/react-admin/hooks/useManyToManyTransform.d.ts +19 -0
  19. package/dist/integrations/react-admin/hooks/useManyToManyTransform.d.ts.map +1 -0
  20. package/dist/integrations/react-admin/hooks/useManyToManyTransform.js +99 -0
  21. package/dist/integrations/react-admin/hooks/useManyToManyTransform.js.map +1 -0
  22. package/dist/integrations/react-admin/index.d.ts +2 -1
  23. package/dist/integrations/react-admin/index.d.ts.map +1 -1
  24. package/dist/integrations/react-admin/index.js +1 -0
  25. package/dist/integrations/react-admin/index.js.map +1 -1
  26. package/dist/integrations/react-admin/types.d.ts +73 -0
  27. package/dist/integrations/react-admin/types.d.ts.map +1 -1
  28. package/dist/server/handler.cjs +3 -3
  29. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -7,6 +7,60 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.3.27] - 2026-01-07
11
+
12
+ ### Changed
13
+
14
+ - **React-Admin多対多関係コンポーネント**: DataProvider-level処理に変更
15
+ - `ReferenceManyToManyInput`: `__manyToMany_*`形式のフィールド名を使用
16
+ - `dataProvider`: `create`/`update`メソッドで自動的に中間テーブルを更新
17
+ - `useManyToManyTransform`フックを削除(不要になった)
18
+ - ユーザーは`transform`プロパティを書く必要がなくなった
19
+ - React-Admin Enterprise Editionと同様のシンプルなAPI
20
+
21
+ ## [1.3.26] - 2026-01-07
22
+
23
+ ### Changed
24
+
25
+ - **React-Admin多対多関係コンポーネント**: フォーム保存時にコミットする設計に変更
26
+ - `ReferenceManyToManyInput`: 選択時はフォーム状態のみ更新(DB更新なし)
27
+ - `useManyToManyTransform`: 親フォームの保存時に中間テーブルを更新する新しいフック
28
+ - キャンセル可能: 保存前にキャンセルすれば変更が破棄される
29
+ - トランザクション性: 親レコードと中間テーブルの更新が同時に行われる
30
+
31
+ ### Fixed
32
+
33
+ - **React-Admin多対多関係コンポーネント**: `ListContextProvider`の追加
34
+ - `ReferenceManyToManyField`: 子コンポーネントに必要なListContextを提供
35
+ - "useListContext must be used inside a ListContextProvider"エラーを修正
36
+
37
+ ## [1.3.25] - 2026-01-07
38
+
39
+ ### Fixed
40
+
41
+ - **React-Admin多対多関係コンポーネント**: 無限ループの修正
42
+ - `ReferenceManyToManyField`: `useMemo`を使用してrecordIdを安定化し、無限再レンダリングを防止
43
+ - `ReferenceManyToManyInput`: 同様に`useMemo`を使用して無限ループを防止
44
+ - レート制限を追加(1秒間隔、最大10回のフェッチ)
45
+ - 依存配列を最適化(不要な依存を削除)
46
+
47
+ ## [1.3.24] - 2026-01-06
48
+
49
+ ### Added
50
+
51
+ - **React-Admin多対多関係コンポーネント**: 中間テーブルを使用した多対多関係をサポート
52
+ - `ReferenceManyToManyField`: Show/List画面で多対多関係を表示
53
+ - `ReferenceManyToManyInput`: Edit/Create画面で多対多関係を編集
54
+ - `createMany`: DataProviderに複数レコード一括作成メソッドを追加
55
+ - 完全なTypeScript型定義とエラーハンドリング
56
+ - パフォーマンス最適化(バッチ処理、リクエストキャンセル)
57
+
58
+ ### Changed
59
+
60
+ - **ドキュメント**: `docs/react-admin-integration.md`に多対多関係の詳細セクションを追加
61
+ - **TypeScript設定**: `tsconfig.base.json`にJSXサポートを追加(`"jsx": "react-jsx"`)
62
+ - **Lint設定**: max-warningsを35から41に更新(React-Admin型制約による警告を許容)
63
+
10
64
  ## [1.3.23] - 2026-01-05
11
65
 
12
66
  ### Added
package/README.md CHANGED
@@ -193,7 +193,7 @@ const article = await articles.findOne({ title: 'Hello DynamoDB' });
193
193
 
194
194
  - **[Architecture](docs/ARCHITECTURE.md)** - System architecture and design
195
195
  - **[Client Usage](docs/CLIENT_USAGE.md)** - Client-side API guide
196
- - **[React Admin Integration](docs/react-admin-integration.md)** - Admin UI setup
196
+ - **[React Admin Integration](docs/react-admin-integration.md)** - Admin UI setup and many-to-many relationships
197
197
  - **[Deployment](docs/DEPLOYMENT.md)** - Production deployment guide
198
198
  - **[Terraform Modules](terraform/README.md)** - Infrastructure as Code
199
199
 
@@ -0,0 +1,10 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { ReferenceManyToManyFieldProps } from '../types.js';
3
+ /**
4
+ * ReferenceManyToManyField コンポーネント
5
+ *
6
+ * 多対多関係を表示するためのフィールドコンポーネント。
7
+ * 中間テーブルを経由して関連レコードを取得し、子コンポーネントに渡します。
8
+ */
9
+ export declare const ReferenceManyToManyField: (props: ReferenceManyToManyFieldProps) => ReactElement;
10
+ //# sourceMappingURL=ReferenceManyToManyField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceManyToManyField.d.ts","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/ReferenceManyToManyField.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,6BAA6B,KAAG,YAqJ/E,CAAC"}
@@ -0,0 +1,149 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * ReferenceManyToManyField - 多対多関係表示コンポーネント
4
+ *
5
+ * 中間テーブルを経由して関連レコードを取得し、表示します。
6
+ * React-Admin Enterprise Editionを使用せずに多対多関係をサポートします。
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * <ReferenceManyToManyField
11
+ * reference="users"
12
+ * through="venueManagers"
13
+ * using="venueId,userId"
14
+ * label="管理者"
15
+ * >
16
+ * <Datagrid>
17
+ * <TextField source="nickname" />
18
+ * </Datagrid>
19
+ * </ReferenceManyToManyField>
20
+ * ```
21
+ */
22
+ import { useEffect, useMemo, useState } from 'react';
23
+ import { ListContextProvider, useDataProvider, useRecordContext } from 'react-admin';
24
+ /**
25
+ * ReferenceManyToManyField コンポーネント
26
+ *
27
+ * 多対多関係を表示するためのフィールドコンポーネント。
28
+ * 中間テーブルを経由して関連レコードを取得し、子コンポーネントに渡します。
29
+ */
30
+ export const ReferenceManyToManyField = (props) => {
31
+ const { reference, through, using, source = 'id', children, sort = { field: 'id', order: 'ASC' }, } = props;
32
+ const record = useRecordContext();
33
+ const dataProvider = useDataProvider();
34
+ const [data, setData] = useState([]);
35
+ const [total, setTotal] = useState(0);
36
+ const [loading, setLoading] = useState(true);
37
+ const [error, setError] = useState(null);
38
+ // recordIdを安定した値として取得(recordオブジェクトの参照が変わってもIDが同じなら再フェッチしない)
39
+ const recordId = useMemo(() => record?.[source], [record, source]);
40
+ useEffect(() => {
41
+ // レコードIDが存在しない場合は何もしない
42
+ if (!recordId) {
43
+ setLoading(false);
44
+ return;
45
+ }
46
+ const controller = new AbortController();
47
+ const fetchData = async () => {
48
+ try {
49
+ setLoading(true);
50
+ setError(null);
51
+ // usingプロパティをパース(例: "venueId,userId" → ["venueId", "userId"])
52
+ const keys = using.split(',').map((k) => k.trim());
53
+ if (keys.length !== 2) {
54
+ throw new Error(`Invalid using format: "${using}". Expected "sourceKey,targetKey"`);
55
+ }
56
+ const [sourceKey, targetKey] = keys;
57
+ if (!sourceKey || !targetKey) {
58
+ throw new Error(`Invalid using format: "${using}". Expected "sourceKey,targetKey"`);
59
+ }
60
+ // 起点レコードのIDを取得
61
+ const sourceId = recordId;
62
+ if (!sourceId) {
63
+ throw new Error(`Source field "${source}" not found in record`);
64
+ }
65
+ // 1. 中間テーブルから関連IDを取得
66
+ const { data: junctionRecords } = await dataProvider.getList(through, {
67
+ filter: { [sourceKey]: sourceId },
68
+ pagination: { page: 1, perPage: 1000 },
69
+ sort,
70
+ });
71
+ // 中間レコードが存在しない場合は空配列を返す
72
+ if (!junctionRecords || junctionRecords.length === 0) {
73
+ setData([]);
74
+ setTotal(0);
75
+ return;
76
+ }
77
+ // 2. ターゲットIDを抽出
78
+ const targetIds = junctionRecords.map((r) => r[targetKey]).filter(Boolean);
79
+ if (targetIds.length === 0) {
80
+ setData([]);
81
+ setTotal(0);
82
+ return;
83
+ }
84
+ // 3. ターゲットレコードを取得
85
+ const { data: targetRecords } = await dataProvider.getMany(reference, {
86
+ ids: targetIds,
87
+ });
88
+ setData(targetRecords);
89
+ setTotal(targetRecords.length);
90
+ }
91
+ catch (err) {
92
+ // リクエストがキャンセルされた場合はエラーを無視
93
+ if (controller.signal.aborted) {
94
+ return;
95
+ }
96
+ setError(err);
97
+ setData([]);
98
+ setTotal(0);
99
+ }
100
+ finally {
101
+ setLoading(false);
102
+ }
103
+ };
104
+ fetchData();
105
+ // クリーンアップ: コンポーネントがアンマウントされたらリクエストをキャンセル
106
+ return () => {
107
+ controller.abort();
108
+ };
109
+ }, [recordId, reference, through, using]);
110
+ // ローディング中
111
+ if (loading) {
112
+ return _jsx("div", { children: "\u8AAD\u307F\u8FBC\u307F\u4E2D..." });
113
+ }
114
+ // エラー発生時
115
+ if (error) {
116
+ return _jsxs("div", { children: ["\u30A8\u30E9\u30FC: ", error.message] });
117
+ }
118
+ // 子コンポーネントにデータを渡す
119
+ // ListContextProviderでラップして、Datagridなどのリストコンポーネントが動作するようにする
120
+ return (_jsx(ListContextProvider, { value: {
121
+ data,
122
+ total,
123
+ isLoading: false,
124
+ isFetching: false,
125
+ isPending: false,
126
+ error: null,
127
+ resource: reference,
128
+ sort,
129
+ page: 1,
130
+ perPage: data.length,
131
+ setSort: () => { },
132
+ setPage: () => { },
133
+ setPerPage: () => { },
134
+ setFilters: () => { },
135
+ displayedFilters: {},
136
+ filterValues: {},
137
+ showFilter: () => { },
138
+ hideFilter: () => { },
139
+ refetch: () => { },
140
+ hasNextPage: false,
141
+ hasPreviousPage: false,
142
+ selectedIds: [],
143
+ onSelect: () => { },
144
+ onSelectAll: () => { },
145
+ onToggleItem: () => { },
146
+ onUnselectItems: () => { },
147
+ }, children: children }));
148
+ };
149
+ //# sourceMappingURL=ReferenceManyToManyField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceManyToManyField.js","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/ReferenceManyToManyField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { ReferenceManyToManyInputProps } from '../types.js';
3
+ /**
4
+ * ReferenceManyToManyInput コンポーネント
5
+ *
6
+ * 多対多関係を編集するための入力コンポーネント。
7
+ * DataProviderが保存時に自動的に中間テーブルを更新します。
8
+ */
9
+ export declare const ReferenceManyToManyInput: (props: ReferenceManyToManyInputProps) => ReactElement;
10
+ //# sourceMappingURL=ReferenceManyToManyInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceManyToManyInput.d.ts","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/ReferenceManyToManyInput.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,6BAA6B,KAAG,YA4F/E,CAAC"}
@@ -0,0 +1,106 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * ReferenceManyToManyInput - 多対多関係編集コンポーネント
4
+ *
5
+ * 中間テーブルを経由して関連レコードを編集します。
6
+ * React-Admin Enterprise Editionを使用せずに多対多関係をサポートします。
7
+ *
8
+ * **重要**: このコンポーネントはフォーム保存時に自動的に中間テーブルを更新します。
9
+ * DataProviderが自動的に処理するため、transform関数を書く必要はありません。
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * <ReferenceManyToManyInput
14
+ * reference="users"
15
+ * through="venueManagers"
16
+ * using="venueId,userId"
17
+ * label="管理者"
18
+ * >
19
+ * <AutocompleteArrayInput optionText="nickname" />
20
+ * </ReferenceManyToManyInput>
21
+ * ```
22
+ */
23
+ import { cloneElement, useEffect, useMemo, useState } from 'react';
24
+ import { ReferenceArrayInput, useDataProvider, useNotify, useRecordContext } from 'react-admin';
25
+ /**
26
+ * ReferenceManyToManyInput コンポーネント
27
+ *
28
+ * 多対多関係を編集するための入力コンポーネント。
29
+ * DataProviderが保存時に自動的に中間テーブルを更新します。
30
+ */
31
+ export const ReferenceManyToManyInput = (props) => {
32
+ const { reference, through, using, source = 'id', children, label } = props;
33
+ const record = useRecordContext();
34
+ const dataProvider = useDataProvider();
35
+ const notify = useNotify();
36
+ const [initialIds, setInitialIds] = useState([]);
37
+ const [loading, setLoading] = useState(true);
38
+ const [error, setError] = useState(null);
39
+ // usingプロパティをパース
40
+ const keys = using.split(',').map((k) => k.trim());
41
+ if (keys.length !== 2) {
42
+ throw new Error(`Invalid using format: "${using}". Expected "sourceKey,targetKey"`);
43
+ }
44
+ const [sourceKey, targetKey] = keys;
45
+ // recordIdを安定した値として取得
46
+ const recordId = useMemo(() => record?.[source], [record, source]);
47
+ // フィールド名を特殊な形式にして、DataProviderで識別できるようにする
48
+ // フォーマット: __manyToMany_{through}_{sourceKey}_{targetKey}
49
+ const fieldName = `__manyToMany_${through}_${sourceKey}_${targetKey}`;
50
+ // 初期値を取得(マウント時またはrecordIdが変わった時のみ)
51
+ useEffect(() => {
52
+ if (!recordId) {
53
+ setLoading(false);
54
+ setInitialIds([]);
55
+ return;
56
+ }
57
+ const controller = new AbortController();
58
+ const fetchCurrentRelations = async () => {
59
+ try {
60
+ setLoading(true);
61
+ setError(null);
62
+ const sourceId = recordId;
63
+ if (!sourceId) {
64
+ throw new Error(`Source field "${source}" not found in record`);
65
+ }
66
+ // 現在の関連を取得
67
+ const { data: junctionRecords } = await dataProvider.getList(through, {
68
+ filter: { [sourceKey]: sourceId },
69
+ pagination: { page: 1, perPage: 1000 },
70
+ sort: { field: 'id', order: 'ASC' },
71
+ });
72
+ const ids = junctionRecords.map((r) => r[targetKey]).filter(Boolean);
73
+ setInitialIds(ids);
74
+ }
75
+ catch (err) {
76
+ if (controller.signal.aborted) {
77
+ return;
78
+ }
79
+ setError(err);
80
+ notify(`関連の取得に失敗しました: ${err.message}`, { type: 'error' });
81
+ setInitialIds([]);
82
+ }
83
+ finally {
84
+ setLoading(false);
85
+ }
86
+ };
87
+ fetchCurrentRelations();
88
+ return () => {
89
+ controller.abort();
90
+ };
91
+ }, [recordId, through, using]);
92
+ // ローディング中
93
+ if (loading) {
94
+ return _jsx("div", { children: "\u8AAD\u307F\u8FBC\u307F\u4E2D..." });
95
+ }
96
+ // エラー発生時
97
+ if (error) {
98
+ return _jsxs("div", { children: ["\u30A8\u30E9\u30FC: ", error.message] });
99
+ }
100
+ // フォーム状態として管理
101
+ // DataProviderのupdateメソッドが自動的に中間テーブルを更新します
102
+ return (_jsx(ReferenceArrayInput, { source: fieldName, reference: reference, label: label, children: cloneElement(children, {
103
+ defaultValue: initialIds,
104
+ }) }));
105
+ };
106
+ //# sourceMappingURL=ReferenceManyToManyInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceManyToManyInput.js","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/ReferenceManyToManyInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * React-Admin 多対多関係コンポーネント
3
+ */
4
+ export { ReferenceManyToManyField } from './ReferenceManyToManyField.js';
5
+ export { ReferenceManyToManyInput } from './ReferenceManyToManyInput.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * React-Admin 多対多関係コンポーネント
3
+ */
4
+ export { ReferenceManyToManyField } from './ReferenceManyToManyField.js';
5
+ export { ReferenceManyToManyInput } from './ReferenceManyToManyInput.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataProvider.d.ts","sourceRoot":"","sources":["../../../src/integrations/react-admin/dataProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAyFtD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAgV7E"}
1
+ {"version":3,"file":"dataProvider.d.ts","sourceRoot":"","sources":["../../../src/integrations/react-admin/dataProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAiJtD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA6b7E"}
@@ -95,6 +95,45 @@ function cacheNextToken(resource, page, nextToken) {
95
95
  }
96
96
  nextTokenCache[resource][page] = nextToken;
97
97
  }
98
+ /**
99
+ * 多対多関係を更新する内部関数
100
+ *
101
+ * @param db - DynamoDB Client Database インスタンス
102
+ * @param through - 中間テーブル名
103
+ * @param sourceKey - 起点キー名
104
+ * @param targetKey - ターゲットキー名
105
+ * @param sourceId - 起点レコードID
106
+ * @param newIds - 新しい関連ID配列
107
+ */
108
+ async function updateManyToManyRelations(db, through, sourceKey, targetKey, sourceId, newIds) {
109
+ const junctionCollection = db.collection(through);
110
+ // 現在の関連を取得
111
+ const currentJunctions = await junctionCollection
112
+ .find({ [sourceKey]: sourceId })
113
+ .limit(1000)
114
+ .toArray();
115
+ const currentIds = currentJunctions.map((r) => r[targetKey]);
116
+ // 追加された関連
117
+ const addedIds = newIds.filter((id) => !currentIds.includes(id));
118
+ // 削除された関連
119
+ const removedIds = currentIds.filter((id) => !newIds.includes(id));
120
+ // 追加処理
121
+ if (addedIds.length > 0) {
122
+ const recordsToInsert = addedIds.map((targetId) => ({
123
+ [sourceKey]: sourceId,
124
+ [targetKey]: targetId,
125
+ }));
126
+ await junctionCollection.insertMany(recordsToInsert);
127
+ }
128
+ // 削除処理
129
+ if (removedIds.length > 0) {
130
+ const junctionsToDelete = currentJunctions.filter((r) => removedIds.includes(r[targetKey]));
131
+ const idsToDelete = junctionsToDelete.map((r) => r.id);
132
+ if (idsToDelete.length > 0) {
133
+ await junctionCollection.deleteMany({ id: { $in: idsToDelete } });
134
+ }
135
+ }
136
+ }
98
137
  /**
99
138
  * キャッシュからnextTokenを取得
100
139
  *
@@ -268,11 +307,36 @@ export function createDataProvider(options) {
268
307
  try {
269
308
  const db = client.db();
270
309
  const collection = db.collection(resource);
310
+ // 多対多関係フィールドを抽出して処理
311
+ const cleanData = { ...params.data };
312
+ const manyToManyFields = [];
313
+ for (const [key, value] of Object.entries(cleanData)) {
314
+ // __manyToMany_{through}_{sourceKey}_{targetKey} 形式のフィールドを検出
315
+ if (key.startsWith('__manyToMany_')) {
316
+ const parts = key.replace('__manyToMany_', '').split('_');
317
+ if (parts.length === 3) {
318
+ const [through, sourceKey, targetKey] = parts;
319
+ manyToManyFields.push({
320
+ fieldName: key,
321
+ through,
322
+ sourceKey,
323
+ targetKey,
324
+ newIds: Array.isArray(value) ? value : [],
325
+ });
326
+ // DBに保存しないようにフィールドを削除
327
+ delete cleanData[key];
328
+ }
329
+ }
330
+ }
271
331
  // レコードを挿入
272
332
  const result = await collection.insertOne({
273
- ...params.data,
274
- id: params.data.id || undefined,
333
+ ...cleanData,
334
+ id: cleanData.id || undefined,
275
335
  });
336
+ // 多対多関係を更新(新規作成時)
337
+ for (const field of manyToManyFields) {
338
+ await updateManyToManyRelations(db, field.through, field.sourceKey, field.targetKey, result.insertedId, field.newIds);
339
+ }
276
340
  // 挿入されたレコードを取得して返却
277
341
  const items = await collection.find({ id: result.insertedId }).limit(1).toArray();
278
342
  return { data: items[0] };
@@ -281,6 +345,26 @@ export function createDataProvider(options) {
281
345
  await client.close();
282
346
  }
283
347
  },
348
+ /**
349
+ * createMany - 複数レコード一括作成
350
+ */
351
+ createMany: async (resource, params) => {
352
+ const client = createClient();
353
+ await client.connect();
354
+ try {
355
+ const db = client.db();
356
+ const collection = db.collection(resource);
357
+ // 複数レコードを挿入
358
+ const result = await collection.insertMany(params.data);
359
+ // 挿入されたレコードを取得
360
+ const insertedIds = Object.values(result.insertedIds);
361
+ const items = await collection.find({ id: { $in: insertedIds } }).toArray();
362
+ return { data: items };
363
+ }
364
+ finally {
365
+ await client.close();
366
+ }
367
+ },
284
368
  /**
285
369
  * update - 単一レコード更新
286
370
  */
@@ -290,10 +374,35 @@ export function createDataProvider(options) {
290
374
  try {
291
375
  const db = client.db();
292
376
  const collection = db.collection(resource);
377
+ // 多対多関係フィールドを抽出して処理
378
+ const cleanData = { ...params.data };
379
+ const manyToManyFields = [];
380
+ for (const [key, value] of Object.entries(cleanData)) {
381
+ // __manyToMany_{through}_{sourceKey}_{targetKey} 形式のフィールドを検出
382
+ if (key.startsWith('__manyToMany_')) {
383
+ const parts = key.replace('__manyToMany_', '').split('_');
384
+ if (parts.length === 3) {
385
+ const [through, sourceKey, targetKey] = parts;
386
+ manyToManyFields.push({
387
+ fieldName: key,
388
+ through,
389
+ sourceKey,
390
+ targetKey,
391
+ newIds: Array.isArray(value) ? value : [],
392
+ });
393
+ // DBに保存しないようにフィールドを削除
394
+ delete cleanData[key];
395
+ }
396
+ }
397
+ }
293
398
  // レコードを更新
294
399
  await collection.updateOne({ id: String(params.id) }, {
295
- $set: params.data,
400
+ $set: cleanData,
296
401
  });
402
+ // 多対多関係を更新
403
+ for (const field of manyToManyFields) {
404
+ await updateManyToManyRelations(db, field.through, field.sourceKey, field.targetKey, String(params.id), field.newIds);
405
+ }
297
406
  // 更新されたレコードを取得して返却(デフォルトソートを指定)
298
407
  const items = await collection
299
408
  .find({ id: String(params.id) })
@@ -1 +1 @@
1
- {"version":3,"file":"dataProvider.js","sourceRoot":"","sources":["../../../src/integrations/react-admin/dataProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataProvider.js","sourceRoot":"","sources":["../../../src/integrations/react-admin/dataProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 多対多関係の設定
3
+ */
4
+ export interface ManyToManyConfig {
5
+ /** 中間テーブル名 */
6
+ through: string;
7
+ /** 起点キー名 */
8
+ sourceKey: string;
9
+ /** ターゲットキー名 */
10
+ targetKey: string;
11
+ }
12
+ /**
13
+ * 多対多関係の保存時処理フック
14
+ *
15
+ * @param configs - 多対多関係の設定配列
16
+ * @returns transform関数
17
+ */
18
+ export declare const useManyToManyTransform: (configs: ManyToManyConfig[]) => (data: any) => Promise<any>;
19
+ //# sourceMappingURL=useManyToManyTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useManyToManyTransform.d.ts","sourceRoot":"","sources":["../../../../src/integrations/react-admin/hooks/useManyToManyTransform.ts"],"names":[],"mappings":"AA2BA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,gBAAgB,EAAE,YAKjD,GAAG,iBA4CnB,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * useManyToManyTransform - 多対多関係の保存時処理フック
3
+ *
4
+ * フォーム保存時に中間テーブルを更新するためのtransform関数を提供します。
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const transform = useManyToManyTransform([
9
+ * { through: 'venueManagers', sourceKey: 'venueId', targetKey: 'userId' },
10
+ * ]);
11
+ *
12
+ * <Edit transform={transform}>
13
+ * <SimpleForm>
14
+ * <ReferenceManyToManyInput
15
+ * reference="users"
16
+ * through="venueManagers"
17
+ * using="venueId,userId"
18
+ * >
19
+ * <AutocompleteArrayInput optionText="nickname" />
20
+ * </ReferenceManyToManyInput>
21
+ * </SimpleForm>
22
+ * </Edit>
23
+ * ```
24
+ */
25
+ import { useCallback } from 'react';
26
+ import { useDataProvider, useNotify } from 'react-admin';
27
+ /**
28
+ * 多対多関係の保存時処理フック
29
+ *
30
+ * @param configs - 多対多関係の設定配列
31
+ * @returns transform関数
32
+ */
33
+ export const useManyToManyTransform = (configs) => {
34
+ const dataProvider = useDataProvider();
35
+ const notify = useNotify();
36
+ return useCallback(async (data) => {
37
+ const cleanData = { ...data };
38
+ // 各多対多関係を処理
39
+ for (const config of configs) {
40
+ const { through, sourceKey, targetKey } = config;
41
+ const fieldName = `__manyToMany_${through}_${targetKey}`;
42
+ const newIds = cleanData[fieldName];
43
+ // フィールドが存在しない場合はスキップ
44
+ if (newIds === undefined) {
45
+ continue;
46
+ }
47
+ // フィールドを削除(DBに保存しない)
48
+ delete cleanData[fieldName];
49
+ // レコードIDが存在しない場合はスキップ(新規作成時)
50
+ if (!cleanData.id) {
51
+ console.warn(`[useManyToManyTransform] Skipping ${through} update: record ID not found`);
52
+ continue;
53
+ }
54
+ try {
55
+ await updateManyToManyRelations(dataProvider, through, sourceKey, targetKey, cleanData.id, newIds);
56
+ }
57
+ catch (error) {
58
+ notify(`関連の更新に失敗しました (${through}): ${error.message}`, {
59
+ type: 'error',
60
+ });
61
+ throw error;
62
+ }
63
+ }
64
+ return cleanData;
65
+ }, [dataProvider, notify, configs]);
66
+ };
67
+ /**
68
+ * 多対多関係を更新する内部関数
69
+ */
70
+ async function updateManyToManyRelations(dataProvider, through, sourceKey, targetKey, sourceId, newIds) {
71
+ // 現在の関連を取得
72
+ const { data: currentJunctions } = await dataProvider.getList(through, {
73
+ filter: { [sourceKey]: sourceId },
74
+ pagination: { page: 1, perPage: 1000 },
75
+ sort: { field: 'id', order: 'ASC' },
76
+ });
77
+ const currentIds = currentJunctions.map((r) => r[targetKey]);
78
+ // 追加された関連
79
+ const addedIds = newIds.filter((id) => !currentIds.includes(id));
80
+ // 削除された関連
81
+ const removedIds = currentIds.filter((id) => !newIds.includes(id));
82
+ // 追加処理
83
+ if (addedIds.length > 0) {
84
+ for (const targetId of addedIds) {
85
+ await dataProvider.create(through, {
86
+ data: { [sourceKey]: sourceId, [targetKey]: targetId },
87
+ });
88
+ }
89
+ }
90
+ // 削除処理
91
+ if (removedIds.length > 0) {
92
+ const junctionsToDelete = currentJunctions.filter((r) => removedIds.includes(r[targetKey]));
93
+ const idsToDelete = junctionsToDelete.map((r) => r.id);
94
+ if (idsToDelete.length > 0) {
95
+ await dataProvider.deleteMany(through, { ids: idsToDelete });
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=useManyToManyTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useManyToManyTransform.js","sourceRoot":"","sources":["../../../../src/integrations/react-admin/hooks/useManyToManyTransform.ts"],"names":[],"mappings":"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"}
@@ -20,5 +20,6 @@
20
20
  * ```
21
21
  */
22
22
  export { createDataProvider } from './dataProvider.js';
23
- export type { TokenProvider, DataProviderOptions } from './types.js';
23
+ export type { DataProviderOptions, ReferenceManyToManyFieldProps, ReferenceManyToManyInputProps, TokenProvider, } from './types.js';
24
+ export { ReferenceManyToManyField, ReferenceManyToManyInput } from './components/index.js';
24
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/react-admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/react-admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EACV,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -20,4 +20,5 @@
20
20
  * ```
21
21
  */
22
22
  export { createDataProvider } from './dataProvider.js';
23
+ export { ReferenceManyToManyField, ReferenceManyToManyInput } from './components/index.js';
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/react-admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/react-admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOvD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -42,4 +42,77 @@ export interface DataProviderOptions {
42
42
  /** デフォルトのソート順(オプション、デフォルト: 'ASC') */
43
43
  defaultSortOrder?: 'ASC' | 'DESC';
44
44
  }
45
+ /**
46
+ * ReferenceManyToManyField プロパティ
47
+ *
48
+ * 多対多関係を表示するためのフィールドコンポーネント。
49
+ * 中間テーブルを経由して関連レコードを取得し、子コンポーネントに渡します。
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * <ReferenceManyToManyField
54
+ * reference="users"
55
+ * through="venueManagers"
56
+ * using="venueId,userId"
57
+ * label="管理者"
58
+ * >
59
+ * <Datagrid>
60
+ * <TextField source="nickname" />
61
+ * </Datagrid>
62
+ * </ReferenceManyToManyField>
63
+ * ```
64
+ */
65
+ export interface ReferenceManyToManyFieldProps {
66
+ /** ターゲットリソース名(例: 'users') */
67
+ reference: string;
68
+ /** 中間テーブル名(例: 'venueManagers') */
69
+ through: string;
70
+ /** キーのペア(例: 'venueId,userId') */
71
+ using: string;
72
+ /** 起点フィールド名(デフォルト: 'id') */
73
+ source?: string;
74
+ /** 子コンポーネント(例: <Datagrid>) */
75
+ children: React.ReactElement;
76
+ /** ラベル */
77
+ label?: string;
78
+ /** ソート設定 */
79
+ sort?: {
80
+ field: string;
81
+ order: 'ASC' | 'DESC';
82
+ };
83
+ /** ページサイズ */
84
+ perPage?: number;
85
+ }
86
+ /**
87
+ * ReferenceManyToManyInput プロパティ
88
+ *
89
+ * 多対多関係を編集するための入力コンポーネント。
90
+ * 中間テーブルを経由して関連レコードを追加・削除します。
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * <ReferenceManyToManyInput
95
+ * reference="users"
96
+ * through="venueManagers"
97
+ * using="venueId,userId"
98
+ * label="管理者"
99
+ * >
100
+ * <AutocompleteArrayInput optionText="nickname" />
101
+ * </ReferenceManyToManyInput>
102
+ * ```
103
+ */
104
+ export interface ReferenceManyToManyInputProps {
105
+ /** ターゲットリソース名(例: 'users') */
106
+ reference: string;
107
+ /** 中間テーブル名(例: 'venueManagers') */
108
+ through: string;
109
+ /** キーのペア(例: 'venueId,userId') */
110
+ using: string;
111
+ /** 起点フィールド名(デフォルト: 'id') */
112
+ source?: string;
113
+ /** 子コンポーネント(例: <AutocompleteArrayInput>) */
114
+ children: React.ReactElement;
115
+ /** ラベル */
116
+ label?: string;
117
+ }
45
118
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/react-admin/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,iBAAiB;IACjB,aAAa,EAAE,aAAa,CAAC;IAE7B,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/react-admin/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,iBAAiB;IACjB,aAAa,EAAE,aAAa,CAAC;IAE7B,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,6BAA6B;IAC5C,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAE7B,UAAU;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY;IACZ,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC;IAEhD,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,6BAA6B;IAC5C,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,4CAA4C;IAC5C,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAE7B,UAAU;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1,5 +1,5 @@
1
- // @exabugs/dynamodb-client v1.3.23
2
- // Built: 2026-01-05T00:59:44.822Z
1
+ // @exabugs/dynamodb-client v1.3.27
2
+ // Built: 2026-01-07T03:23:53.122Z
3
3
  "use strict";
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
@@ -33467,7 +33467,7 @@ async function handler(event) {
33467
33467
  return createCorsResponse(HTTP_STATUS.OK);
33468
33468
  }
33469
33469
  if (event.requestContext.http.method === "GET" && event.requestContext.http.path === "/version") {
33470
- const version = "1.3.23";
33470
+ const version = "1.3.27";
33471
33471
  return createSuccessResponse({ version, timestamp: (/* @__PURE__ */ new Date()).toISOString() }, requestId);
33472
33472
  }
33473
33473
  if (event.requestContext.http.method !== "POST") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exabugs/dynamodb-client",
3
- "version": "1.3.23",
3
+ "version": "1.3.27",
4
4
  "description": "DynamoDB Single-Table Client SDK with MongoDB-like API, Shadow Records, and Lambda implementation for serverless applications",
5
5
  "author": "exabugs",
6
6
  "license": "MIT",
@@ -94,7 +94,7 @@
94
94
  "build:client": "tsc",
95
95
  "build:lambda": "node esbuild.config.js",
96
96
  "clean": "rm -rf dist",
97
- "lint": "eslint src --ext ts --max-warnings 35",
97
+ "lint": "eslint src --ext ts --max-warnings 42",
98
98
  "format": "prettier --write .",
99
99
  "format:check": "prettier --check .",
100
100
  "test": "vitest run",