faasjs-pg について
faasjs-pgは、FaasJSプロジェクトでPostgreSQLを扱うためのスキルです。型付きクエリ、スキーマ移行、トランザクション、データベーステストの指針を示します。
主な機能
- 01型付きQueryBuilderの指針
- 02スキーマと移行の実践方法
- 03トランザクションとロックの指針
- 04数値型境界の指針
- 05PostgreSQLテストの実践方法
活用シーン
- 01型付きPostgreSQLクエリの設計
- 02可逆なスキーマ移行の計画
- 03トランザクションとロック動作のテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ faasjs/ faasjs --skill faasjs-pgインストール後、Claude Code で/faasjs-pgを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/guidelines/pg-numeric-boundaries.mdpg-query-builder.mdpg-schema-and-migrations.mdpg-table-types.mdpg-testing.mdpg-transactions-and-locking.md詳細
FaasJS PostgreSQL
デフォルトのワークフロー
- テーブル宣言、マイグレーション、クエリ、テストの整合性を保ちます。
- 生の SQL よりも、型付けされた
QueryBuilderの句を優先します。 - 生の SQL の値はパラメーター化し、信頼できる境界を明確にします。
- マイグレーションは決定的で、辞書順に並べ替え可能にし、可能な限り取り消し可能にします。
- クエリの型推論が動作の一部である場合は、実行時のデータベースアサーションと型アサーションを組み合わせます。
- アトミック性や行ロックが重要な場合は、明示的なトランザクションと並行性テストを使用します。
これらのリファレンスを読み込む
Tablesの宣言マージと具体的な行の形状:references/guidelines/pg-table-types.md。QueryBuilder、エイリアス、生の SQL、更新式、returning、エッジケースの動作:references/guidelines/pg-query-builder.md。- トランザクションモード、トランザクションクライアントのライフタイム、行ロック、再試行の責務、並行性テスト:
references/guidelines/pg-transactions-and-locking.md。 - TypeScript と API の境界をまたぐ正確な
numeric、decimal、bigintの値:references/guidelines/pg-numeric-boundaries.md。 - タイムスタンプ付きマイグレーション、
SchemaBuilder、TableBuilder、スキーマ実行:references/guidelines/pg-schema-and-migrations.md。 PgVitestPlugin()、共有マイグレーションスナップショット、ファイル単位のデータベース分離、DATABASE_URL、expectTypeOf(...):references/guidelines/pg-testing.md。
注意事項
- クエリの型推論の信頼できる情報源として、
Tablesの宣言を扱います。 - 生の SQL は意図的に使用し、繰り返し使う生の SQL は共有ヘルパーまたはビルダーの句に置き換えます。
- 書き込みクエリとトランザクションは、呼び出し元のスコープと想定されるエラー処理で保護します。トランザクションクライアントをコールバックの外に持ち出してはいけません。
- 遅延グローバルセットアップは
PgVitestPlugin()に任せます。このプラグインは実行単位のスナップショットを一度マイグレーションし、データベースを使用する各テストファイルに分離されたクローンを提供します。 - トランザクションで
enqueueJobも呼び出す場合は、FaasJS API And Jobs を読み込み、業務データとジョブ行の両方がロールバックされることをテストします。 - マイグレーションおよび PG 統合テストのコマンドには
DATABASE_URLが必要です。
検証
- スキーマ変更のマイグレーション検証が必要で、
DATABASE_URLが利用可能な場合は、npx faasjs-pg migrateを実行します。 - 対象を絞った PG テストは
vp test <pattern>で実行します。 - 型に依存するクエリの動作を変更する場合は、
expectTypeOf(...)を含めます。 - ロックや並行性の動作には、実際に重複するトランザクションを使用します。生成 SQL のアサーションだけでは不十分です。
コメント
Markdown 対応