tbls-askを使うと、入社後便利だった

今年からGO株式会社でバックエンドエンジニアとして働いている。

日々の調査や、仕様を調べるときにちょっとDBのクエリを投げたいケースが有る。ただサービスに対する知識や、ER図が完全に頭に入っているわけではないので、クエリを書くのにちょっと手に引っかかりを感じる。

なので、zshで下記のようなものを書いて使っている。

インストールはこんな感じ。

$ brew install k1Low/homebrew-tap/tbls
$ brew install k1Low/homebrew-tap/tbls-ask

zshにこういうのを書いといて、スキーマ更新のたびに dump_tbls_schemaを実行している。

# dbnameは各環境に合わせてください
export TBLS_SCHEMA=~/<dbname>/schema.json
function dump_tbls_schema() {
    tbls doc 'mysql://root@localhost:3306/<dbname>' ~/<dbname>
    gsed -i 's/zero_or_more/zero or more/g' $TBLS_SCHEMA
    gsed -i 's/one_or_more/one or more/g' $TBLS_SCHEMA
    gsed -i 's/zero_or_one/zero or one/g' $TBLS_SCHEMA
    gsed -i 's/exactly_one/exactly one/g' $TBLS_SCHEMA
}

これを整備しておくとおもむろにターミナルで

$ tbls-ask fooテーブルのid 23098のレコードの最新の決済情報をみたい

とか打つと

select
  *
from
  foo inner join on foo.id = payments.foo_id
where
  id = 23098

みたいなクエリを作成してくれる。世界的なプログラマの小山さんが作っただけあって、よく出来てる。