プラグインの使用
プラグインを使用するには、設定ファイルの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