`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