🦁

sqlboiler ~セットアップ編~

2021/06/21に公開

環境

Go 1.16~
sqlboilerv.4.4.0

1. sqlboilerのインストール

# slqboilerのインストール
go install github.com/volatiletech/sqlboiler/v4@latest
# driverのインストール(今回はMySQL)
go install github.com/volatiletech/sqlboiler/v4/drivers/sqlboiler-mysql@latest

2. 構成ファイル(sqlboiler.toml)の作成

データベースドライバーや構成オプションを設定するために、slqboiler.tomlファイルを作成します。

MySQLを利用する場合下記のような構成になります。

sqlboiler.toml
[mysql]
  dbname="devdb"
  host="localhost"
  port=3306
  user="root"
  pass=""  
  sslmode="false"
tips オプションの追加

オプションとしてwhitelist、blacklistが存在します。
whitelist→追加したテーブルのsqlboiler modelが作成されます
blacklist→追加したテーブルのsqlboiler modelは作成されなくなります

whitelist

sqlboiler.toml
[mysql]
  dbname="devdb"
  host="localhost"
  port=3306
  user="root"
  pass=""  
  sslmode="false"
  blacklist=["users"]  # usersテーブルのsqlboiler modelのみが作成される

blacklist

すでにデータベースには存在しているが、sqlboiler modelとして生成したくない場合はテーブル名を指定します。

sqlboiler.toml
[mysql]
  dbname="devdb"
  host="localhost"
  port=3306
  user="root"
  pass=""  
  sslmode="false"
  blacklist=["staffs"]  # staffsテーブルのsqlboiler modelは作成されない

3. sqlboilerモデル群の作成

sqlboiler ドライバー名でsqlboiler modelの生成を行います。

$ sqlboiler mysql 

コマンド実行後、実行フォルダ配下にsqlboiler model群が作成されます。

.
├── models
│   ├── users.go        # DBに存在するテーブル
│   ├── users_test.go     # users modelのテストファイル
│   ├── staffs.go
│   ├── staffs_test.go
│   ├── boil_main_test.go 
│   ├── boil_queries.go
│   ├── boil_queries_test.go
│   ├── boil_suites_test.go
│   ├── boil_table_names.go   # model出力されたテーブル名が定義されている
│   ├── boil_types.go         # enum値が定数として保存

advanced!  オプションをつけてmodel生成をカスタマイズ

model生成コマンドにもオプションをつけることができます。

Name 役割 Defaults
pkgname 作成ファイル名の指定 "models"
output 出力フォルダ名 "models"
tag Struct tag出力オプション []
debug デバッグモードの出力制限 false
add-global-variants グローバル変数の出力制限 false
add-panic-variants panic 変数の出力制限 false
no-context context.Context利用無効 false
no-hooks hooks機能の無効 false
no-tests テストファイル無効 false
no-auto-timestamps タイムスタンプ無効 false
no-rows-affected APIで影響を受ける行の無効 false
no-driver-templates DBドライバーのテンプレート解析無効 false
tag-ignore タグの無視カラムリスト []

下記のような実行もできます。

sqlboiler mysql --pkgname sqlboilermodels --output "./package/sqlboilermodels" --wipe --config ./sqlboiler.toml

pkgname 出力ファイル名の指定
output 出力フォルダの指定
wipe 健全性確保のため、出力modelファイルを先に削除→出力する
config sqlboiler.tomlで構成した内容で設定を上書き

出力結果

.
├── package
│   └── sqlboilermodels(--output, --pkgname)
│       ├── users.go
│       ├── users_test.go
│       ├── staffs.go
│       ├── staffs_test.go
│       ├── boil_main_test.go
│       ├── boil_queries.go
│       ├── boil_queries_test.go
│       ├── boil_suites_test.go
│       ├── boil_table_names.go
│       ├── boil_types.go


参考

https://github.com/volatiletech/sqlboiler#getting-started

この記事に書いてあることができたら・・・

「Issue」のタスクをこなすことができます❗️
IssueではIssue単位で企業のお仕事ができるサービスです

Ex.

Firebaseでメールアドレス確認メール文章変更の実装
単価3,000円で受けて10時間ほどで実装した場合
3,000円 × 10時間 = 30,000円

登録は こちら から!
サービスページは こちら
企業様登録はこちら

Discussion