sqlc
#SQL #Go #Kotlin #Python #TypeScript #MySQL #PostgreSQL #SQLite
概要
sqlcはSQLを解析して、Goのコードを自動生成してくれるツールです
プラグインを入れることで、Go以外の言語のコードも生成できます (公式ではKotlinやTypeScript (sqlc-gen-typescript), Python向けのプラグインが提供されています)
インストール
Homebrewやsnapなどでインストールできます
Homebrew: $ brew install sqlc
snap: $ snap install sqlc
go install: $ go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
また、からバイナリのダウンロードも可能です
設定
sqlc.yaml/sqlc.yml/sqlc.jsonのいずれかに設定を記述します (sqlc initコマンドで自動生成も可能で、この場合はsqlc.yamlが作られます)
設定ファイルのJSON Schemaはinternal/config/v_two.jsonで定義されているようです
CLI
バージョンの確認
$ sqlc version
設定ファイルの生成
$ sqlc init
SQLからのコード生成
$ sqlc generate
生成されたコードが最新であることを確認
code:shell
# CIでの実行が推奨されるようです
$ sqlc diff
/icons/hr.icon
v1.25.0時点でのリファレンス
Using sqlc in CI/CD
SQLの記述について
マクロ
マイグレーション
sqlcはデータベースマイグレーションをサポートしていません
ただし、dbmateやatlas, sql-migrateといったツールのマイグレーションファイルの解析はサポートされていて、これらのマイグレーションファイルのdownの部分だけを取り除いた上でスキーマを解釈してくれるようです
/icons/hr.icon
プラグイン
sqlc-gen-typescript - TypeScript向けプラグイン
リンク
sqlcとdockertestでデータベースを使ったテストを書こう | gihyo.jp
関連ページ
sqlc Cloud
Denoでsqlcを使う
sqlcのコードリーディング