🦁
sqlboiler ~セットアップ編~
環境
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
参考
この記事に書いてあることができたら・・・
「Issue」のタスクをこなすことができます❗️
IssueではIssue単位で企業のお仕事ができるサービスです
Ex.
Firebaseでメールアドレス確認メール文章変更の実装
単価3,000円で受けて10時間ほどで実装した場合
3,000円 × 10時間 = 30,000円
Discussion