`generate` - コード生成
sqlc generate
はSQLを解析し、結果を分析して、コードを出力します。スキーマとクエリは別々のSQLファイルに保存されます。これらのファイルへのパスはsqlc.yaml
設定ファイルに記載されます。
version: "2"
sql:
- engine: "postgresql"
queries: "query.sql"
schema: "schema.sql"
gen:
go:
package: "tutorial"
out: "tutorial"
sql_package: "pgx/v5"
行の取得、挿入、更新、削除について詳細なドキュメントを書いています。
デフォルトでは、sqlcは組み込みのクエリ分析エンジンを使用して分析を実行します。高速ですが、このエンジンは一部の複雑なクエリや型推論を処理できません。
そのデータベースからのメタデータを使用して拡張分析を行うために、sqlcがデータベース接続を使用するよう設定できます。
データベースベースの分析ツールは現在PostgreSQLをサポートしており、MySQLとSQLiteのサポートは将来計画されています。
管理データベースによる拡張分析
管理データベースが設定されている場合、generate
は自動的にスキーマを持つホスト型エフェメラルデータベースを作成し、そのデータベースを使用してクエリ分析を改善します。そしてsqlcは将来のgenerate
実行を高速化するために、クエリ単位でローカルに分析をキャッシュします。これにより、最新のスキーマでデータベースを実行・維持する手間が省けます。最小限の動作設定は以下の通りです:
version: "2"
servers:
- engine: postgresql
uri: "postgres://locahost:5432/postgres?sslmode=disable"
sql:
- engine: "postgresql"
queries: "query.sql"
schema: "schema.sql"
database:
managed: true
gen:
go:
out: "db"
sql_package: "pgx/v5"
独自のデータベースを使用した拡張分析
sqlcデータベース設定でuri
を提供することで、独自のデータベースを使用してデータベースベースの分析をオプトインできます。
uri
文字列は${...}
構文を使用して環境変数への参照を含めることができます。以下の例では、接続文字列のパスワードとしてPG_PASSWORD
環境変数の値が設定されます。
version: "2"
sql:
- engine: "postgresql"
queries: "query.sql"
schema: "schema.sql"
database:
uri: "postgres://postgres:${PG_PASSWORD}@localhost:5432/postgres"
gen:
go:
out: "db"
sql_package: "pgx/v5"
uri
で設定されたデータベースは、クエリ分析が正しく動作するために最新のスキーマを持つ必要があり、sqlc
はデータベースにスキーママイグレーションを適用しません。sqlc generate
を実行する前に、選択したマイグレーションツールを使用して必要なテーブルとオブジェクトを作成してください。
原文:https://docs.sqlc.dev/en/latest/howto/generate.html