プラグインの使用

プラグインを使用するには、設定ファイルのVersion 2を使用する必要があります。トップレベルのplugins配列で利用可能なプラグインを定義します。

WASMプラグイン

WASMプラグインは完全にサンドボックス化されています。ネットワーク、ファイルシステム、または環境変数にアクセスできません。

codegenセクションでは、outフィールドが新しいファイルを含むディレクトリを決定します。pluginキーは、トップレベルのpluginsマップで定義されたプラグインを参照する必要があります。任意のoptionsはJSONとして文字列にシリアル化され、プラグイン自体に渡されます。

version: '2'
plugins:
- name: greeter
  wasm:
    url: https://github.com/sqlc-dev/sqlc-gen-greeter/releases/download/v0.1.0/sqlc-gen-greeter.wasm
    sha256: afc486dac2068d741d7a4110146559d12a013fd0286f42a2fc7dcd802424ad07
sql:
- schema: schema.sql
  queries: query.sql
  engine: postgresql
  codegen:
  - out: gen
    plugin: greeter
    options:
      lang: en-US

完全に動作する例については、以下のファイルを参照してください:

  • sqlc-gen-greeter
    • フレンドリーなメッセージを出力するWASMプラグイン(Rustで書かれている)
  • wasm_plugin_sqlc_gen_greeter
    • WASMプラグインの使用方法を示すプロジェクト例

プロセスプラグイン

プロセスベースのプラグインは最小限のセキュリティしか提供しません。信頼できるプラグインのみを使用してください。さらに良いのは、自分で書いたプラグインのみを使用することです。

codegenセクションでは、outフィールドが新しいファイルを含むディレクトリを決定します。pluginキーは、トップレベルのpluginsマップで定義されたプラグインを参照する必要があります。任意のoptionsはJSONとして文字列にシリアル化され、プラグイン自体に渡されます。

version: '2'
plugins:
- name: jsonb
  process:
    cmd: sqlc-gen-json
sql:
- schema: schema.sql
  queries: query.sql
  engine: postgresql
  codegen:
  - out: gen
    plugin: jsonb
    options:
      indent: "  "
      filename: codegen.json

完全に動作する例については、以下のファイルを参照してください:

  • sqlc-gen-json
    • CodeGenRequestをJSONにシリアル化するプロセスベースのプラグイン
  • process_plugin_sqlc_gen_json
    • プロセスベースのプラグインの使用方法を示すプロジェクト例
  • process_plugin_sqlc_gen_json
    • jsonを使用してプロセスベースのプラグインの使用方法を示すプロジェクト例

環境変数

デフォルトでは、プラグインは環境変数へのアクセスを継承しません。代わりに、変数ごとにアクセスを設定できます。例えば、プラグインがPATH環境変数を必要とする場合、pluginsコレクションのenvリストにPATHを追加してください。

version: '2'
sql:
- schema: schema.sql
  queries: query.sql
  engine: postgresql
  codegen:
  - out: gen
    plugin: test
plugins:
- name: test
  env:
  - PATH
  wasm:
    url: https://github.com/sqlc-dev/sqlc-gen-test/releases/download/v0.1.0/sqlc-gen-test.wasm
    sha256: 138220eae508d4b65a5a8cea555edd155eb2290daf576b7a8b96949acfeb3790

SQLC_VERSIONという名前の変数は常にプラグインの環境に含まれ、それを呼び出すsqlc実行可能ファイルのバージョンに設定されます。


原文:https://docs.sqlc.dev/en/latest/guides/plugins.html