設定
sqlc
ツールはsqlc.(yaml|yml)
またはsqlc.json
ファイルで設定されます。このファイルはsqlc
コマンドを実行するディレクトリに配置する必要があります。
バージョン2
version: "2"
cloud:
project: "<PROJECT_ID>"
sql:
- schema: "postgresql/schema.sql"
queries: "postgresql/query.sql"
engine: "postgresql"
gen:
go:
package: "authors"
out: "postgresql"
database:
managed: true
rules:
- sqlc/db-prepare
- schema: "mysql/schema.sql"
queries: "mysql/query.sql"
engine: "mysql"
gen:
go:
package: "authors"
out: "mysql"
sql
sql
コレクションの各マッピングには以下のキーがあります:
name
:- このクエリセットの人にやさしい識別子。オプション。
engine
:postgresql
、mysql
、sqlite
のいずれか。
schema
:- SQLマイグレーションのディレクトリまたは単一のSQLファイルへのパス、またはパスのリスト。
queries
:- SQLクエリのディレクトリまたは単一のSQLファイルへのパス、またはパスのリスト。
codegen
:- コードジェネレーターを設定するマッピングのコレクション。サポートされるキーについてはcodegenを参照。
gen
:- 組み込みコードジェネレーターを設定するマッピング。サポートされるキーについてはgenを参照。
database
:- データベース接続を設定するマッピング。サポートされるキーについてはdatabaseを参照。
rules
:sqlc vet
で実行するルール名のコレクション。設定オプションについてはrulesを参照。
analyzer
:- クエリ分析を設定するマッピング。サポートされるキーについてはanalyzerを参照。
strict_function_checks
- trueの場合、呼び出されたSQL関数が存在しない場合にエラーを返します。デフォルトは
false
。
- trueの場合、呼び出されたSQL関数が存在しない場合にエラーを返します。デフォルトは
strict_order_by
- trueの場合、order by列があいまいな場合にエラーを返します。デフォルトは
true
。
- trueの場合、order by列があいまいな場合にエラーを返します。デフォルトは
codegen
codegen
マッピングは以下のキーをサポートしています:
out
:- 生成されたコードの出力ディレクトリ。
plugin
:- プラグインの名前。
plugins
コレクションで定義されている必要があります。
- プラグインの名前。
options
:- プラグイン固有のオプションのマッピング。
version: '2'
plugins:
- name: py
wasm:
url: https://github.com/sqlc-dev/sqlc-gen-python/releases/download/v0.16.0-alpha/sqlc-gen-python.wasm
sha256: 428476c7408fd4c032da4ec74e8a7344f4fa75e0f98a5a3302f238283b9b95f2
sql:
- schema: "schema.sql"
queries: "query.sql"
engine: postgresql
codegen:
- out: src/authors
plugin: py
options:
package: authors
emit_sync_querier: true
emit_async_querier: true
query_parameter_limit: 5
database
database
マッピングは以下のキーをサポートしています:
managed
:- trueの場合、管理データベースに接続します。デフォルトは
false
。
- trueの場合、管理データベースに接続します。デフォルトは
uri
:- データベース接続URI
uri
文字列は${...}
構文を使用して環境変数への参照を含めることができます。以下の例では、接続文字列にPG_PASSWORD
環境変数の値がパスワードとして設定されます。
version: '2'
sql:
- schema: schema.sql
queries: query.sql
engine: postgresql
database:
uri: postgresql://postgres:${PG_PASSWORD}@localhost:5432/authors
gen:
go:
package: authors
out: postgresql
analyzer
analyzer
マッピングは以下のキーをサポートしています:
database
:- falseの場合、クエリ分析に設定されたデータベースを使用しません。デフォルトは
true
。
- falseの場合、クエリ分析に設定されたデータベースを使用しません。デフォルトは
gen
gen
マッピングは以下のキーをサポートしています:
go
package
:- 生成されたコードに使用するパッケージ名。デフォルトは
out
のベース名。
- 生成されたコードに使用するパッケージ名。デフォルトは
out
:- 生成されたコードの出力ディレクトリ。
sql_package
:pgx/v4
、pgx/v5
、database/sql
のいずれか。デフォルトはdatabase/sql
。
sql_driver
:github.com/jackc/pgx/v4
、github.com/jackc/pgx/v5
、github.com/lib/pq
、github.com/go-sql-driver/mysql
のいずれか。デフォルトなし。クエリアノテーション:copyfrom
が使用される場合は必須。
emit_db_tags
:- trueの場合、生成された構造体にDBタグを追加します。デフォルトは
false
。
- trueの場合、生成された構造体にDBタグを追加します。デフォルトは
emit_prepared_queries
:- trueの場合、プリペアドクエリのサポートを含めます。デフォルトは
false
。
- trueの場合、プリペアドクエリのサポートを含めます。デフォルトは
emit_interface
:- trueの場合、生成されたパッケージに
Querier
インターフェースを出力します。デフォルトはfalse
。
- trueの場合、生成されたパッケージに
emit_exact_table_names
:- trueの場合、構造体名はテーブル名をミラーします。そうでなければ、sqlcは複数形のテーブル名を単数形にしようとします。デフォルトは
false
。
- trueの場合、構造体名はテーブル名をミラーします。そうでなければ、sqlcは複数形のテーブル名を単数形にしようとします。デフォルトは
emit_empty_slices
:- trueの場合、
:many
クエリによって返されるスライスはnil
の代わりに空になります。デフォルトはfalse
。
- trueの場合、
emit_exported_queries
:- trueの場合、自動生成されたSQL文を他のパッケージからアクセスできるようにエクスポートできます。
emit_json_tags
:- trueの場合、生成された構造体にJSONタグを追加します。デフォルトは
false
。
- trueの場合、生成された構造体にJSONタグを追加します。デフォルトは
emit_result_struct_pointers
:- trueの場合、クエリ結果は構造体へのポインターとして返されます。複数の結果を返すクエリは、ポインターのスライスとして返されます。デフォルトは
false
。
- trueの場合、クエリ結果は構造体へのポインターとして返されます。複数の結果を返すクエリは、ポインターのスライスとして返されます。デフォルトは
emit_params_struct_pointers
:- trueの場合、パラメーターは構造体へのポインターとして渡されます。デフォルトは
false
。
- trueの場合、パラメーターは構造体へのポインターとして渡されます。デフォルトは
emit_methods_with_db_argument
:- trueの場合、生成されたメソッドは
*Queries
構造体にDBTXを格納する代わりにDBTX引数を受け入れます。デフォルトはfalse
。
- trueの場合、生成されたメソッドは
emit_pointers_for_null_types
:- trueの場合、null許可列の生成された型は
database/sql
のnull型(例:NullString
)の代わりにポインター(例:*string
)として出力されます。現在、sql_package
がpgx/v4
またはpgx/v5
の場合のPostgreSQLとSQLiteでのみサポートされています。デフォルトはfalse
。
- trueの場合、null許可列の生成された型は
emit_enum_valid_method
:- trueの場合、文字列が有効な列挙値かどうかを示すenum型でValidメソッドを生成します。
emit_all_enum_values
:- trueの場合、すべての有効な列挙値を返すenum型ごとの関数を出力します。
emit_sql_as_comment
:- trueの場合、生成された関数の上にSQL文をコードブロックコメントとして出力し、既存のコメントに追加します。デフォルトは
false
。
- trueの場合、生成された関数の上にSQL文をコードブロックコメントとして出力し、既存のコメントに追加します。デフォルトは
build_tags
:- 設定されている場合、生成されたGoファイルの先頭に
//go:build <build_tags>
ディレクティブを追加します。
- 設定されている場合、生成されたGoファイルの先頭に
initialisms
:- 大文字にする頭字語の配列。例えば、
app_id
はAppID
になります。デフォルトは["id"]
。
- 大文字にする頭字語の配列。例えば、
json_tags_id_uppercase
:- trueの場合、jsonタグの"Id"は大文字になります。falseの場合、キャメルケースになります。デフォルトは
false
。
- trueの場合、jsonタグの"Id"は大文字になります。falseの場合、キャメルケースになります。デフォルトは
json_tags_case_style
:- キャメルケースの場合は
camel
、パスカルケースの場合はpascal
、スネークケースの場合はsnake
、DBの列名を使用する場合はnone
。デフォルトはnone
。
- キャメルケースの場合は
omit_unused_structs
:true
の場合、sqlcは特定のパッケージのクエリで使用されていないテーブルと列挙構造体を生成しません。デフォルトはfalse
。
output_batch_file_name
:- バッチファイルの名前をカスタマイズします。デフォルトは
batch.go
。
- バッチファイルの名前をカスタマイズします。デフォルトは
output_db_file_name
:- dbファイルの名前をカスタマイズします。デフォルトは
db.go
。
- dbファイルの名前をカスタマイズします。デフォルトは
output_models_file_name
:- modelsファイルの名前をカスタマイズします。デフォルトは
models.go
。
- modelsファイルの名前をカスタマイズします。デフォルトは
output_querier_file_name
:- querierファイルの名前をカスタマイズします。デフォルトは
querier.go
。
- querierファイルの名前をカスタマイズします。デフォルトは
output_copyfrom_file_name
:- copyfromファイルの名前をカスタマイズします。デフォルトは
copyfrom.go
。
- copyfromファイルの名前をカスタマイズします。デフォルトは
output_files_suffix
:- 指定されている場合、生成されたファイルの名前にサフィックスが追加されます。
query_parameter_limit
:- Go関数に生成される位置引数の数。常にパラメーター構造体を出力するには、これを
0
に設定します。デフォルトは1
。
- Go関数に生成される位置引数の数。常にパラメーター構造体を出力するには、これを
rename
:- 生成された構造体フィールドの名前をカスタマイズします。使用方法については「フィールド名の変更」を参照。
overrides
:- データベース型のマッピングに使用される型を決定する定義のコレクション。
overrides
型のオーバーライドの使用に関する詳細なガイドについては「型のオーバーライド」を参照してください。overrides
コレクションの各マッピングには以下のキーがあります:
db_type
:- オーバーライドするPostgreSQLまたはMySQL型。サポートされる型の完全なリストは、postgresql_type.goまたはmysql_type.goで確認できます。Postgresの場合、利用可能な場合はpg_catalogプレフィックス付きの名前を使用する必要があります。
column
キーが定義されている場合は使用できません。
- オーバーライドするPostgreSQLまたはMySQL型。サポートされる型の完全なリストは、postgresql_type.goまたはmysql_type.goで確認できます。Postgresの場合、利用可能な場合はpg_catalogプレフィックス付きの名前を使用する必要があります。
column
:- 型のオーバーライドが型ではなくテーブルの特定の列に対して行われる場合。
column
はtable.column
の形式である必要がありますが、schema.table.column
またはcatalog.schema.table.column
を指定してより具体的にすることもできます。db_type
キーが定義されている場合は使用できません。
- 型のオーバーライドが型ではなくテーブルの特定の列に対して行われる場合。
go_type
:- 生成されたコードで使用するGo型の完全修飾名。
go_struct_tag
:- 生成されたコードで使用するreflectスタイルの構造体タグ。例:
a:"b" x:"y,z"
。すべてのフィールドに一般的なjson/dbタグが必要な場合は、代わりにemit_db_tags
および/またはemit_json_tags
を使用してください。
- 生成されたコードで使用するreflectスタイルの構造体タグ。例:
nullable
:true
の場合、列がnull許可の場合にこの型を使用します。デフォルトはfalse
。
より複雑なimportパスの場合、go_type
は以下のキーを持つオブジェクトにすることもできます:
import
:- 型が定義されているパッケージのimportパス。
package
:- 型が定義されているパッケージ名。これは、importパスが希望するパッケージ名で終わらない場合にのみ必要です。
type
:- パッケージプレフィックスなしの型名自体。
pointer
:true
に設定されている場合、生成されたコードは型自体ではなく型へのポインターを使用します。
slice
:true
に設定されている場合、生成されたコードは型自体ではなく型のスライスを使用します。
kotlin
v1.17.0で削除され、sqlc-gen-kotlinプラグインに置き換えられました。切り替えるには移行ガイドに従ってください。
package
:- 生成されたコードに使用するパッケージ名。
out
:- 生成されたコードの出力ディレクトリ。
emit_exact_table_names
:- trueの場合、生成されたモデルに正確なテーブル名を使用します。そうでなければ、単数形を推測します。デフォルトは
false
。
- trueの場合、生成されたモデルに正確なテーブル名を使用します。そうでなければ、単数形を推測します。デフォルトは
python
v1.17.0で削除され、sqlc-gen-pythonプラグインに置き換えられました。切り替えるには移行ガイドに従ってください。
package
:- 生成されたコードに使用するパッケージ名。
out
:- 生成されたコードの出力ディレクトリ。
emit_exact_table_names
:- trueの場合、生成されたモデルに正確なテーブル名を使用します。そうでなければ、単数形を推測します。デフォルトは
false
。
- trueの場合、生成されたモデルに正確なテーブル名を使用します。そうでなければ、単数形を推測します。デフォルトは
emit_sync_querier
:- trueの場合、同期メソッドを持つクラスを生成します。デフォルトは
false
。
- trueの場合、同期メソッドを持つクラスを生成します。デフォルトは
emit_async_querier
:- trueの場合、非同期メソッドを持つクラスを生成します。デフォルトは
false
。
- trueの場合、非同期メソッドを持つクラスを生成します。デフォルトは
emit_pydantic_models
:- trueの場合、
pydantic.BaseModel
から継承するクラスを生成します。そうでなければ、dataclass
デコレータを使用してクラスを定義します。デフォルトはfalse
。
- trueの場合、
json
out
:- 生成されたJSONの出力ディレクトリ。
filename
:- 生成されたJSONドキュメントのファイル名。デフォルトは
codegen_request.json
。
- 生成されたJSONドキュメントのファイル名。デフォルトは
indent
:- JSONドキュメントで使用するインデント文字列。デフォルトは``。
plugins
plugins
コレクションの各マッピングには以下のキーがあります:
name
:- このプラグインの名前。必須。
env
- プラグインに渡す環境変数のリスト。デフォルトでは、環境変数は渡されません。
process
: 単一のcmd
キーを持つマッピングcmd
:- このプラグインを使用する際に呼び出す実行可能ファイル
format
:- 期待される形式。
json
とprotobuf
形式をサポートします。デフォルトはprotobuf
。
- 期待される形式。
wasm
:url
とsha256
の2つのキーを持つマッピングurl
:- WASMファイルを取得するURL。
https://
またはfile://
スキームをサポートします。
- WASMファイルを取得するURL。
sha256
- ダウンロードされたファイルのSHA256チェックサム。
version: "2"
plugins:
- name: "py"
wasm:
url: "https://github.com/sqlc-dev/sqlc-gen-python/releases/download/v0.16.0-alpha/sqlc-gen-python.wasm"
sha256: "428476c7408fd4c032da4ec74e8a7344f4fa75e0f98a5a3302f238283b9b95f2"
- name: "js"
env:
- PATH
process:
cmd: "sqlc-gen-json"
rules
rules
コレクションの各マッピングには以下のキーがあります:
name
:- このルールの名前。必須。
rule
:- Common Expression Language(CEL)式。必須。
message
:- このルールが
true
と評価される場合に表示されるオプションのメッセージ。
- このルールが
組み込みルールのリストとカスタムルールの作成ヘルプについては、vetドキュメントを参照してください。
version: "2"
sql:
- schema: "query.sql"
queries: "query.sql"
engine: "postgresql"
gen:
go:
package: "authors"
out: "db"
rules:
- no-pg
- no-delete
- only-one-param
- no-exec
rules:
- name: no-pg
message: "invalid engine: postgresql"
rule: |
config.engine == "postgresql"
- name: no-delete
message: "don't use delete statements"
rule: |
query.sql.contains("DELETE")
- name: only-one-param
message: "too many parameters"
rule: |
query.params.size() > 1
- name: no-exec
message: "don't use exec"
rule: |
query.cmd == "exec"
グローバルオーバーライド
時には、コード生成のさまざまな仕様で同じ設定を行う必要があります。その場合、以下の方法でoverrides
マッピングを使用して型のオーバーライドとフィールドの名前変更のグローバル定義を行うことができます:
version: "2"
overrides:
go:
rename:
id: "Identifier"
overrides:
- db_type: "timestamptz"
nullable: true
engine: "postgresql"
go_type:
import: "gopkg.in/guregu/null.v4"
package: "null"
type: "Time"
sql:
- schema: "postgresql/schema.sql"
queries: "postgresql/query.sql"
engine: "postgresql"
gen:
go:
package: "authors"
out: "postgresql"
- schema: "mysql/schema.sql"
queries: "mysql/query.sql"
engine: "mysql"
gen:
go:
package: "authors"
out: "mysql"
前の設定では、id
という名前のテーブル列から構造体フィールドが生成される場合、常にIdentifier
として生成されます。
また、PostgresテーブルにNULL許可のtimestamp with time zone
列がある場合、常にnull.Time
として生成されます。グローバル型オーバーライドのマッピングには、通常の型オーバーライドにはないengine
フィールドがあることに注意してください。このフィールドは、複数のエンジンを使用する複数の定義がある場合にのみ使用されます。そうでなければ、engine
キーの値は現在使用されているエンジンにデフォルト設定されます。
現在、グローバルと通常の両方の型のオーバーライドとフィールドの名前変更は、Goでのみ完全にサポートされています。
バージョン1
version: "1"
packages:
- name: "db"
path: "internal/db"
queries: "./sql/query/"
schema: "./sql/schema/"
engine: "postgresql"
emit_db_tags: false
emit_prepared_queries: true
emit_interface: false
emit_exact_table_names: false
emit_empty_slices: false
emit_exported_queries: false
emit_json_tags: true
emit_result_struct_pointers: false
emit_params_struct_pointers: false
emit_methods_with_db_argument: false
emit_pointers_for_null_types: false
emit_enum_valid_method: false
emit_all_enum_values: false
build_tags: "some_tag"
json_tags_case_style: "camel"
omit_unused_structs: false
output_batch_file_name: "batch.go"
output_db_file_name: "db.go"
output_models_file_name: "models.go"
output_querier_file_name: "querier.go"
output_copyfrom_file_name: "copyfrom.go"
query_parameter_limit: 1
packages
packages
コレクションの各マッピングには以下のキーがあります:
name
:- 生成されたコードに使用するパッケージ名。デフォルトは
path
のベース名。
- 生成されたコードに使用するパッケージ名。デフォルトは
path
:- 生成されたコードの出力ディレクトリ。
queries
:- SQLクエリのディレクトリまたは単一のSQLファイルへのパス、またはパスのリスト。
schema
:- SQLマイグレーションのディレクトリまたは単一のSQLファイルへのパス、またはパスのリスト。
engine
:postgresql
またはmysql
のいずれか。デフォルトはpostgresql
。
sql_package
:pgx/v4
、pgx/v5
、database/sql
のいずれか。デフォルトはdatabase/sql
。
emit_db_tags
:- trueの場合、生成された構造体にDBタグを追加します。デフォルトは
false
。
- trueの場合、生成された構造体にDBタグを追加します。デフォルトは
emit_prepared_queries
:- trueの場合、プリペアドクエリのサポートを含めます。デフォルトは
false
。
- trueの場合、プリペアドクエリのサポートを含めます。デフォルトは
emit_interface
:- trueの場合、生成されたパッケージに
Querier
インターフェースを出力します。デフォルトはfalse
。
- trueの場合、生成されたパッケージに
emit_exact_table_names
:- trueの場合、構造体名はテーブル名をミラーします。そうでなければ、sqlcは複数形のテーブル名を単数形にしようとします。デフォルトは
false
。
- trueの場合、構造体名はテーブル名をミラーします。そうでなければ、sqlcは複数形のテーブル名を単数形にしようとします。デフォルトは
emit_empty_slices
:- trueの場合、
:many
クエリによって返されるスライスはnil
の代わりに空になります。デフォルトはfalse
。
- trueの場合、
emit_exported_queries
:- trueの場合、自動生成されたSQL文を他のパッケージからアクセスできるようにエクスポートできます。
emit_json_tags
:- trueの場合、生成された構造体にJSONタグを追加します。デフォルトは
false
。
- trueの場合、生成された構造体にJSONタグを追加します。デフォルトは
emit_result_struct_pointers
:- trueの場合、クエリ結果は構造体へのポインターとして返されます。複数の結果を返すクエリは、ポインターのスライスとして返されます。デフォルトは
false
。
- trueの場合、クエリ結果は構造体へのポインターとして返されます。複数の結果を返すクエリは、ポインターのスライスとして返されます。デフォルトは
emit_params_struct_pointers
:- trueの場合、パラメーターは構造体へのポインターとして渡されます。デフォルトは
false
。
- trueの場合、パラメーターは構造体へのポインターとして渡されます。デフォルトは
emit_methods_with_db_argument
:- trueの場合、生成されたメソッドは
*Queries
構造体にDBTXを格納する代わりにDBTX引数を受け入れます。デフォルトはfalse
。
- trueの場合、生成されたメソッドは
emit_pointers_for_null_types
:- trueで
sql_package
がpgx/v4
またはpgx/v5
に設定されている場合、null許可列の生成された型はdatabase/sql
のnull型(例:NullString
)の代わりにポインター(例:*string
)として出力されます。デフォルトはfalse
。
- trueで
emit_enum_valid_method
:- trueの場合、文字列が有効な列挙値かどうかを示すenum型でValidメソッドを生成します。
emit_all_enum_values
:- trueの場合、すべての有効な列挙値を返すenum型ごとの関数を出力します。
build_tags
:- 設定されている場合、生成されたGoファイルの先頭に
//go:build <build_tags>
ディレクティブを追加します。
- 設定されている場合、生成されたGoファイルの先頭に
json_tags_case_style
:- キャメルケースの場合は
camel
、パスカルケースの場合はpascal
、スネークケースの場合はsnake
、DBの列名を使用する場合はnone
。デフォルトはnone
。
- キャメルケースの場合は
omit_unused_structs
:true
の場合、sqlcは特定のパッケージのクエリで使用されていないテーブルと列挙構造体を生成しません。デフォルトはfalse
。
output_batch_file_name
:- バッチファイルの名前をカスタマイズします。デフォルトは
batch.go
。
- バッチファイルの名前をカスタマイズします。デフォルトは
output_db_file_name
:- dbファイルの名前をカスタマイズします。デフォルトは
db.go
。
- dbファイルの名前をカスタマイズします。デフォルトは
output_models_file_name
:- modelsファイルの名前をカスタマイズします。デフォルトは
models.go
。
- modelsファイルの名前をカスタマイズします。デフォルトは
output_querier_file_name
:- querierファイルの名前をカスタマイズします。デフォルトは
querier.go
。
- querierファイルの名前をカスタマイズします。デフォルトは
output_copyfrom_file_name
:- copyfromファイルの名前をカスタマイズします。デフォルトは
copyfrom.go
。
- copyfromファイルの名前をカスタマイズします。デフォルトは
output_files_suffix
:- 指定されている場合、生成されたファイルの名前にサフィックスが追加されます。
query_parameter_limit
:- Go関数で生成される位置引数(
>= 0
)。常にパラメーター構造体を出力するには、これを0
に設定する必要があります。デフォルトは1
。
- Go関数で生成される位置引数(
overrides
PostgreSQL/MySQL型からGo型へのデフォルトマッピングは、必要な場合にのみ標準ライブラリ外のパッケージを使用します。
例えば、uuid
PostgreSQL型はgithub.com/google/uuid
にマップされます。UUIDに異なるGoパッケージが必要な場合は、overrides
配列でパッケージを指定します。この場合、代わりにgithub.com/gofrs/uuid
を使用します。
version: "1"
packages: [...]
overrides:
- go_type: "github.com/gofrs/uuid.UUID"
db_type: "uuid"
各オーバーライドドキュメントには以下のキーがあります:
db_type
:- オーバーライドするPostgreSQLまたはMySQL型。サポートされる型の完全なリストは、postgresql_type.goまたはmysql_type.goで確認できます。Postgresの場合、利用可能な場合はpg_catalogプレフィックス付きの名前を使用する必要があります。
go_type
:- 生成されたコードで使用するGo型の完全修飾名。
go_struct_tag
:- 生成されたコードで使用するreflectスタイルの構造体タグ。例:
a:"b" x:"y,z"
。すべてのフィールドに一般的なjson/dbタグが必要な場合は、代わりにemit_db_tags
および/またはemit_json_tags
を使用してください。
- 生成されたコードで使用するreflectスタイルの構造体タグ。例:
nullable
:- trueの場合、列がnull許可の場合にこの型を使用します。デフォルトは
false
。
- trueの場合、列がnull許可の場合にこの型を使用します。デフォルトは
単一のdb_type
オーバーライド設定は、null許可またはnull不許可の列のいずれかに適用されますが、両方には適用されません。両方のケースで単一のgo_type
をオーバーライドしたい場合は、2つのオーバーライドを指定する必要があります。
より複雑なimportパスの場合、go_type
はオブジェクトにすることもできます。
version: "1"
packages: [...]
overrides:
- db_type: "uuid"
go_type:
import: "a/b/v2"
package: "b"
type: "MyType"
列単位の型オーバーライド
前のセクションで説明した型ベースではなく、テーブルの特定のフィールドのモデルまたはクエリ生成で使用されるGo型をオーバーライドしたい場合があります。
これは、オーバーライド定義でcolumn
プロパティを指定することで設定できます。column
はtable.column
の形式である必要がありますが、schema.table.column
またはcatalog.schema.table.column
を指定してより具体的にすることもできます。
version: "1"
packages: [...]
overrides:
- column: "authors.id"
go_type: "github.com/segmentio/ksuid.KSUID"
パッケージレベルのオーバーライド
オーバーライドは、前のセクションで示したようにグローバルに設定することも、単一のパッケージにオーバーライド動作をスコープするパッケージごとに設定することもできます:
version: "1"
packages:
- overrides: [...]
rename
構造体フィールド名は、列名から簡単なアルゴリズムを使用して生成されます:列名をアンダースコアで分割し、各部分の最初の文字を大文字にします。
account -> Account
spotify_url -> SpotifyUrl
app_id -> AppID
生成されたフィールド名に満足しない場合は、rename
マッピングを使用して新しい名前を選択します。キーは列名で、値は使用する構造体フィールド名です。
version: "1"
packages: [...]
rename:
spotify_url: "SpotifyURL"
原文:https://docs.sqlc.dev/en/latest/reference/config.html