wasm.Runner
が作られているのはここ plug
変数の実体はここで作られている ${チェックサム}/plugin.wasm
という名前で保存される /plugins
ディレクトリ ${os.UserCacheDir()}/sqlc/plugins
(デフォルト) (*Compiler).ParseCatalog
のあたりが怪しそう (internal/cmd/generate.go#L308) sql.schema
を受け取っているっぽい (*Compiler).parseCatalog
はsqlc.yamlの sql.schema
で指定された .sql
ファイルを解析して、 Catalog
を更新している (internal/compiler/compile.go#L29-L53) migrations.RemoveRollbackStatements
によって各種マイグレーションツール(dbmate, sql-migrateなど)における down
用のSQLを削除している (internal/migrations/migrations.go#L14-L33) sqlpath.Glob
で記述されている (internal/sql/sqlpath/read.go#L19) os.ReadDir
で読み込まれている os.ReadDir
はファイル名順でファイル名の一覧を返す .sql
ファイルの一覧が取得できる (*Catalog).Update
の実体はここ (internal/sql/catalog/catalog.go#L45) .Update()
メソッドは、各 .sql
ファイルごとに都度呼び出される Catalog
は現在のスキーマ定義に関するスナップショットを管理していて、 .Update'(
によりスナップショットが更新される .Update()
の内部では Parser
が返却した各ノードを愚直に一つずつ検査し、 *Catalog
に定義された各種ノード種別に対応するメソッドを呼んでスナップショットを更新している