nestjs-drizzle-crud-generator
Drizzle ORM を使用した NestJS アプリケーション向けの完全な CRUD モジュールを生成します。新しいエンティティの CRUD エンドポイント、Drizzle クエリを用いたサービス、Zod バリデーション付き DTO、ユニットテストを含むデータベース操作が必要なサーバーサイド機能を構築する際に使用します。「user モジュールを生成して」「product の CRUD を作成して」「エンドポイント付きの新しいエンティティを追加して」といったリクエスト時、または NestJS でデータベース連携機能をセットアップする際にトリガーされます。
description の原文を見る
Generates complete CRUD modules for NestJS applications with Drizzle ORM. Use when building server-side features in NestJS that require database operations, including creating new entities with full CRUD endpoints, services with Drizzle queries, Zod-validated DTOs, and unit tests. Triggered by requests like "generate a user module", "create a product CRUD", "add a new entity with endpoints", or when setting up database-backed features in NestJS.
SKILL.md 本文
NestJS Drizzle CRUD ジェネレータ
概要
NestJS アプリケーション向けに Drizzle ORM を使用した完全な CRUD モジュールを自動生成します。zaccheroni-monorepo パターンに従うすべての必要なファイルを生成します:フィーチャーモジュール、コントローラー、サービス、Zod 検証済み DTO、Drizzle スキーマ、Jest ユニットテストです。
使用する場合
- 完全な CRUD エンドポイント付きで新しいエンティティモジュールを作成する場合
- NestJS でデータベース連動フィーチャーを構築する場合
- Zod 検証を使用したタイプセーフな DTO を生成する場合
- Drizzle ORM クエリを備えたサービスを追加する場合
- モック化されたデータベースを使用したユニットテストを作成する場合
手順
ステップ 1:エンティティフィールドを定義する
エンティティ定義を収集します:
- エンティティ名(例:
user、product、order) - 型付きフィールドリスト(サポートされている型については
references/field-types.mdを参照) - 必須フィールド vs デフォルト値を持つオプショナルフィールド
ステップ 2:ジェネレータを実行する
python scripts/generate_crud.py --feature <name> --fields '<json-array>' --output <path>
ステップ 3:生成されたファイルを確認する
すべての予想されたファイルが作成されたことを確認します:
ls -la libs/server/<feature-name>/src/lib/
予想される構造:
controllers/
services/
dto/
schema/
<feature>-feature.module.ts
ステップ 4:TypeScript コンパイルを実行する
cd libs/server && npx tsc --noEmit
ステップ 5:ユニットテストを実行する
cd libs/server && npm test -- --testPathPattern=<feature-name>
例
User モジュールを生成する
python scripts/generate_crud.py \
--feature user \
--fields '[{"name": "name", "type": "string", "required": true}, {"name": "email", "type": "email", "required": true}, {"name": "password", "type": "string", "required": true}]' \
--output ./libs/server
Product モジュールを生成する
python scripts/generate_crud.py \
--feature product \
--fields '[{"name": "title", "type": "string", "required": true}, {"name": "price", "type": "number", "required": true}, {"name": "description", "type": "text", "required": false}, {"name": "inStock", "type": "boolean", "required": false, "default": true}]' \
--output ./libs/server
生成される構造
libs/server/{feature-name}/
├── src/
│ ├── index.ts
│ └── lib/
│ ├── {feature}-feature.module.ts
│ ├── controllers/
│ │ ├── index.ts
│ │ └── {feature}.controller.ts
│ ├── services/
│ │ ├── index.ts
│ │ ├── {feature}.service.ts
│ │ └── {feature}.service.spec.ts
│ ├── dto/
│ │ ├── index.ts
│ │ └── {feature}.dto.ts
│ └── schema/
│ └── {feature}.table.ts
機能
モジュール
forRootAsyncパターンを使用した遅延設定- 他のモジュール用に生成されたサービスをエクスポート
- フィーチャーテーブルのための DatabaseModule をインポート
コントローラー
- 完全な CRUD エンドポイント:POST、GET、PATCH、DELETE
- ページネーション用のクエリパラメータ検証
- Zod 検証パイプ統合
サービス
- Drizzle ORM クエリメソッド
- ソフト削除サポート(
deletedAtカラム経由) - リミット/オフセットによるページネーション
- フィルタリングサポート
- タイプセーフな戻り値型
DTO
- Create および Update 用の Zod スキーマ
- フィルタリング用のクエリパラメータスキーマ
- NestJS DTO 統合
テスト
- Jest テストスイート
- モック化された Drizzle データベース
- すべての CRUD 操作のテストケース
手動統合
生成後、アプリモジュールに統合します:
// app.module.ts
import { {{FeatureName}}FeatureModule } from '@your-org/server-{{feature}}';
@Module({
imports: [
{{FeatureName}}FeatureModule.forRootAsync({
useFactory: () => ({
defaultPageSize: 10,
maxPageSize: 100,
}),
}),
],
})
export class AppModule {}
依存関係
必要なパッケージ:
@nestjs/common@nestjs/coredrizzle-ormdrizzle-zodzodnestjs-zod
ベストプラクティス
- コミット前に検証する:生成されたコードをコミットする前に必ず
tsc --noEmitとテストを実行してください - サービスをカスタマイズする:生成後、検証したサービスにビジネスロジックを追加してください
- データベースマイグレーション:生成された Drizzle スキーマのためのマイグレーションを別途作成してください
- 生成された型を使用する:アプリケーションコード内で生成された型を参照してください
- DTO を確認する:API 要件に基づいて Zod 検証ルールを調整してください
制約と警告
- ソフト削除のみ:削除操作はソフト削除(
deletedAtタイムスタンプ)を使用します。ハード削除には手動による変更が必要です - 認証なし:生成されたコードに認証ガードは含まれません。セキュリティ要件に基づいて追加してください
- 基本的な CRUD のみ:複雑なクエリ、トランザクション、またはビジネスロジックは手動で実装する必要があります
- JSON エスケープ:コマンドライン上で JSON 配列を渡すときは、フィールドの周囲にシングルクォートを使用してください
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- giuseppe-trisciuoglio
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/giuseppe-trisciuoglio/developer-kit / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。