フィールド名の変更
フィールド名の変更
構造体フィールド名は、列名から簡単なアルゴリズムを使用して生成されます:列名をアンダースコアで分割し、各部分の最初の文字を大文字にします。
account -> Account
spotify_url -> SpotifyUrl
app_id -> AppID
生成されたフィールド名に満足しない場合は、rename
マッピングを使用して新しい名前を選択します。キーは列名で、値は使用する構造体フィールド名です。
version: "2"
sql:
- schema: "postgresql/schema.sql"
queries: "postgresql/query.sql"
engine: "postgresql"
gen:
go:
package: "authors"
out: "postgresql"
rename:
spotify_url: "SpotifyURL"
テーブル
テーブルに関連する出力構造体も名前を変更できます。デフォルトでは、構造体名はテーブル名の単数形バージョンになります。例えば、authors
テーブルはAuthor
構造体を生成します。
CREATE TABLE authors (
id BIGSERIAL PRIMARY KEY,
name text NOT NULL,
bio text
);
package db
import (
"database/sql"
)
type Author struct {
ID int64
Name string
Bio sql.NullString
}
この構造体の名前を変更するには、生成された構造体名を使用する必要があります。この例では、それはauthor
になります。rename
マップを使用してこの構造体の名前をWriter
に変更します(大文字のW
に注意)。
バージョン1:
version: '1'
packages:
- path: db
engine: postgresql
schema: query.sql
queries: query.sql
rename:
author: Writer
バージョン2:
version: "2"
sql:
- engine: postgresql
queries: query.sql
schema: query.sql
overrides:
go:
rename:
author: Writer
package db
import (
"database/sql"
)
type Writer struct {
ID int64
Name string
Bio sql.NullString
}
制限事項
Renameマッピングはパッケージ全体に適用されます。したがって、foo
という名前の列とfoo
というテーブル名は、異なるrename値にマップできません。
原文:https://docs.sqlc.dev/en/latest/howto/rename.html