🦁

【Go】sqlBoilerとgormを比較

2022/07/31に公開

背景

社内でsqlBoilerを使用しているので、どんな感じか自分で触ってみたかった。今回はdbをpostgresで行います。

環境はこちらを使って行いました。
https://github.com/tmk616window/go_gqlgen

sqlBoilerとは

sqlboilerとは、goのORMの種類の一つです。あらかじめ用意したdbの内容から自動で型を生成してくれます。この時に型だけではなく、crudも自動で生成してくれます。自動生成するのに設定ファイルも必要なので、準備する必要があります。

sqlBoilerの実装

まずこちらをダウンロードをして環境を立ち上げてください。環境を立ち上げた時にdbは自動生成されるので、今回はdbの初期設定は不要です。自分の環境で行う時には最初にdbを作成しておく必要があります。

dockerfile
WORKDIR /go/api_test

//以下を追加
RUN go install github.com/volatiletech/sqlboiler/v4@latest && \
    go install github.com/volatiletech/sqlboiler/v4/drivers/sqlboiler-psql@latest

次にapi_test配下にsqlboiler.tomlを作成し以下の情報を追加してください。

[psql]
blacklist = []
dbname = "db"
host = "postgresql"
pass = "password"
port = 5432
sslmode = "disable"
user = "user"

その次にこちらのコマンドを叩いてください。そうすると、ファイルが自動でmodels_psqlのディレクトリが自動で生成されます。
psqlとは、先ほど作成したsqlboiler.tomlのpsqlの内容です。
--output:自動生成されるファイルをこのディレクトリ配下に作ります。
--pkgname:パッケージネームの設定です。

sqlboiler psql --output models_psql --pkgname models_psql --wipe

追加されたディレクトリ内にあるパッケージをダウンロードするために次のコマンドを叩いてください。

go mod tidy

まとめ

gormとは逆だった。gormはテーブルの構造体を自分で作ってそれをもとにdbを作成するが、sqlboilerはまず、dbにテーブルを準備してそれをもとにテーブルの構造体が自動で生成される。まだ理解が浅いので、もう少し触って改めて、まとめたい。

Discussion