---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 70
  claims_with_evidence: 68
  claims_without_evidence: 2
confidence_derived: 0.97
---

# 根拠レポート：db-postgres単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：68 / 70、根拠なし：2
- 優先レビュー（高）
  1. **C-56〜C-58 型定義テスト**：TypeScriptの型テストは実行時テストとは異なる手法が必要
  2. **C-62〜C-70 re-exportテスト**：エクスポート確認のテストは優先度が低く、実装コストとのバランス検討が必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/db-postgres/src/index.ts` - メインのpostgresAdapter関数定義
- E-02: `packages/db-postgres/src/connect.ts` - connect関数およびconnectWithReconnect関数
- E-03: `packages/db-postgres/src/types.ts` - Args型、PostgresAdapter型の定義
- E-04: `packages/db-postgres/src/predefinedMigrations/blocks-as-json.ts` - dynamicマイグレーションテンプレート
- E-05: `packages/db-postgres/src/predefinedMigrations/relationships-v2-v3.ts` - V2からV3へのマイグレーション定数
- E-06: `packages/db-postgres/src/exports/migration-utils.ts` - マイグレーションユーティリティのre-export
- E-07: `packages/db-postgres/src/exports/types-deprecated.ts` - 非推奨型のre-export
- E-08: `packages/db-postgres/src/drizzle-proxy/index.ts` - drizzle-ormのre-export
- E-09: `packages/db-postgres/src/drizzle-proxy/node-postgres.ts` - node-postgresのre-export
- E-10: `packages/db-postgres/src/drizzle-proxy/pg-core.ts` - pg-coreのre-export
- E-11: `packages/db-postgres/src/drizzle-proxy/relations.ts` - relationsのre-export

## 3) Claims と根拠の対応（レビューの主戦場）

### postgresAdapter関数（index.ts）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | デフォルト設定でアダプターが正常に生成される | E-01 L69-242 | ○ |
| C-02 | idType='serial'でpayloadIDType='number'になる | E-01 L70-71 | ○ |
| C-03 | idType='uuid'でpayloadIDType='text'になる | E-01 L70-71 | ○ |
| C-04 | idType未指定時にデフォルトで'serial'が使用される | E-01 L70 | ○ |
| C-05 | allowIDOnCreate=trueが正しく設定される | E-01 L72 | ○ |
| C-06 | allowIDOnCreate未指定時にデフォルトfalse | E-01 L72 | ○ |
| C-07 | schemaName指定時にpgSchemaが設定される | E-01 L85-86 | ○ |
| C-08 | schemaName未指定時にデフォルトpgSchema設定 | E-01 L88-89 | ○ |
| C-09 | extensionsが正しく変換される | E-01 L92-98 | ○ |
| C-10 | localesSuffixカスタム値設定 | E-01 L146 | ○ |
| C-11 | localesSuffixデフォルト'_locales' | E-01 L146 | ○ |
| C-12 | relationshipsSuffixカスタム値設定 | E-01 L159 | ○ |
| C-13 | relationshipsSuffixデフォルト'_rels' | E-01 L159 | ○ |
| C-14 | versionsSuffixカスタム値設定 | E-01 L167 | ○ |
| C-15 | versionsSuffixデフォルト'_v' | E-01 L167 | ○ |
| C-16 | transactionOptions=falseでdefaultBeginTransaction | E-01 L170-171 | ○ |
| C-17 | transactionOptions設定時にbeginTransaction使用 | E-01 L170-171 | ○ |
| C-18 | blocksAsJSON=trueが正しく設定される | E-01 L117 | ○ |
| C-19 | blocksAsJSONデフォルトfalse | E-01 L117 | ○ |
| C-20 | disableCreateDatabase=trueが正しく設定される | E-01 L126 | ○ |
| C-21 | disableCreateDatabaseデフォルトfalse | E-01 L126 | ○ |
| C-22 | afterSchemaInitフックが設定される | E-01 L114 | ○ |
| C-23 | beforeSchemaInitフックが設定される | E-01 L116 | ○ |
| C-24 | readReplicasが設定される | E-01 L157 | ○ |
| C-25 | prodMigrationsが設定される | E-01 L154 | ○ |
| C-26 | tablesFilterが設定される | E-01 L165 | ○ |
| C-27 | カスタムpgモジュールが設定される | E-01 L149 | ○ |
| C-28 | initializingプロミスが正しく設定される | E-01 L80-83 | ○ |
| C-29 | sanitizeStatementsがSQL文を正しく整形する | E-01 L100-108 | ○ |
| C-30 | sanitizeStatements空配列の処理 | E-01 L100-108 | ○ |

### connect関数（connect.ts）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | プール未設定時に新しいプールが作成される | E-02 L56-59 | ○ |
| C-32 | プール既存時に再作成されない | E-02 L56 | ○ |
| C-33 | drizzleインスタンスが初期化される | E-02 L62 | ○ |
| C-34 | readReplicaOptions設定時にレプリカが設定される | E-02 L64-79 | ○ |
| C-35 | PAYLOAD_DROP_DATABASE=trueでテーブルがドロップされる | E-02 L81-86 | ○ |
| C-36 | hotReload=trueの場合はテーブルがドロップされない | E-02 L81 | ○ |
| C-37 | createExtensionsが呼ばれる | E-02 L114 | ○ |
| C-38 | 開発環境でpushDevSchemaが呼ばれる | E-02 L117-123 | ○ |
| C-39 | 本番環境でpushDevSchemaが呼ばれない | E-02 L117 | ○ |
| C-40 | PAYLOAD_MIGRATING=trueでpushDevSchemaが呼ばれない | E-02 L118 | ○ |
| C-41 | push=falseでpushDevSchemaが呼ばれない | E-02 L120 | ○ |
| C-42 | resolveInitializingが呼ばれる | E-02 L125-127 | ○ |
| C-43 | 本番環境でprodMigrations時にmigrateが呼ばれる | E-02 L129-131 | ○ |
| C-44 | DB未存在時に自動作成される | E-02 L90-100 | ○ |
| C-45 | DB未存在かつdisableCreateDatabase=trueでエラー | E-02 L90, L111 | ○ |
| C-46 | 接続エラー時にrejectInitializingが呼ばれる | E-02 L108-110 | ○ |
| C-47 | 接続エラー時に適切なエラーメッセージ | E-02 L111 | ○ |
| C-48 | 非Errorオブジェクトが正しく処理される | E-02 L89 | ○ |

### connectWithReconnect関数（connect.ts）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | reconnect=falseで直接接続される | E-02 L21-22 | ○ |
| C-50 | reconnect=trueで接続が試行される | E-02 L24-25 | ○ |
| C-51 | reconnect=trueで接続失敗時に1秒後再試行 | E-02 L26-31 | ○ |
| C-52 | 接続成功時にerrorリスナーが登録される | E-02 L36 | ○ |
| C-53 | ECONNRESETエラー時に再接続が試行される | E-02 L38-39 | ○ |
| C-54 | ECONNRESET以外のエラー時は再接続されない | E-02 L38 | ○ |
| C-55 | pool.connect()がundefined返却時に早期リターン | E-02 L33-35 | ○ |

### 型定義（types.ts）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-56 | Args型が必須プロパティpoolを持つ | E-03 L61 | ○ |
| C-57 | idTypeが'serial'または'uuid'のみ許可 | E-03 L56 | ○ |
| C-58 | PostgresAdapterがBasePostgresAdapterを拡張 | E-03 L93-98 | ○ |

### predefinedMigrations

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-59 | dynamicマイグレーションテンプレートが生成される | E-04 L5-7 | ○ |
| C-60 | importsが正しいインポート文を含む | E-05 L1 | ○ |
| C-61 | upSQLが正しいマイグレーションコードを含む | E-05 L2-8 | ○ |

### exports

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-62 | getBlocksToJsonMigratorがエクスポートされる | E-06 L1 | ○ |
| C-63 | migratePostgresV2toV3がエクスポートされる | E-06 L2 | ○ |
| C-64 | 非推奨Args型がエクスポートされる | E-07 L9-10 | ○ |
| C-65 | 非推奨GeneratedDatabaseSchema型がエクスポートされる | E-07 L14-15 | ○ |
| C-66 | 非推奨PostgresAdapter型がエクスポートされる | E-07 L19-20 | ○ |

### drizzle-proxy

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | drizzle-ormの全エクスポートが再エクスポートされる | E-08 L1 | ○ |
| C-68 | drizzle-orm/node-postgresの全エクスポートが再エクスポートされる | E-09 L1 | ○ |
| C-69 | drizzle-orm/pg-coreの全エクスポートが再エクスポートされる | E-10 L1 | ○ |
| C-70 | drizzle-orm/relationsの全エクスポートが再エクスポートされる | E-11 L1 | ○ |

## 4) 不足情報（Unknown / Missing）

- **@payloadcms/drizzleパッケージの詳細実装**
  - 本モジュールは多くの機能を`@payloadcms/drizzle`から再エクスポートしており、そのパッケージ内部の動作テストは別途必要
  - 候補：`packages/drizzle/src/` 配下のソースコード解析

- **統合テストの必要性**
  - 実際のPostgreSQLデータベースとの接続テストは単体テストの範囲外
  - 候補：既存の`test/`ディレクトリ内のテストスイート参照

## 5) リスクフラグ（レビュー観点）

| リスクレベル | 項目 | 説明 |
|---|---|---|
| 2（高リスク） | データベース接続・切断 | C-31〜C-55：接続エラー処理、再接続ロジックは本番環境での安定性に直結 |
| 1（中リスク） | 設定オプションの検証 | C-01〜C-30：多数の設定オプションの組み合わせテストが必要 |
| 1（中リスク） | マイグレーション関連 | C-43, C-59〜C-61：本番マイグレーションの失敗はデータ損失リスクあり |
| 0（低リスク） | 型定義・エクスポート | C-56〜C-70：コンパイル時チェックで大部分カバー可能 |

## 6) レビュアーチェックリスト（最小）

- [ ] 接続エラー時の再接続ロジック（connectWithReconnect）が適切に動作するか確認
- [ ] PAYLOAD_DROP_DATABASE環境変数によるテーブル削除が意図通りの条件でのみ実行されるか確認
- [ ] 本番環境でのマイグレーション実行条件（NODE_ENV='production' && prodMigrations存在）が正しいか確認
- [ ] idType='uuid'使用時のpayloadIDType='text'変換が下流で問題を起こさないか確認
- [ ] トランザクション設定（transactionOptions）の無効化時にデータ整合性が保たれるか確認
- [ ] リードレプリカ設定時のフェイルオーバー動作が考慮されているか確認
