SQL BoilerはDBスキーマから構造体などを生成してくれる便利ORMです。
DBスキーマの型からGoの型にいい感じにマッピングしてくれるのですが、DB(ここではPostgresSQL)でintegerで定義したものはGo上ではintで表現されるようになります。
これでも特に困らないことは多いのですが、OpenAPIやProtocolBuffersなどから生成されるGoのコードではintはint32で定義されるので、これらと相互に変換する際にはint32になっていたほうが都合が良いです。
intとint32の変換であればそこまで大変ではないのですが、 null許可されたカラムはnull.Intとintで表現されるため、これをint32にキャストはとてもめんどうです(めんどうというかやり方がわからなかった。)
*intを避けるのであれば、DBスキーマでNULL許容しなければよいという話ではあるのですが、その話をすると長くなるのでここではやめ、*intと真剣に向き合うことにします。
とは言え方法は簡単で、SQL Boilerの設定ファイルに以下のように記載するだけです。
[[types]]
[types.match]
type = "null.Int"
nullable = true
[types.replace]
type = "null.Int32"
[types.imports]
third_party = ['"github.com/volatiletech/null/v8"']
[[types]]
[types.match]
type = "int"
[types.replace]
type = "int32"
null.Intにmatchしたらnull.Int32にreplace、intにmatchしたらint32にreplaceというふうにするだけです。
tomlの文法に癖があってREADMEをパット見ただけではわかりにくかったのですが、tomlの文法さえ理解すればかんたんですね。