Write and Run

it's a simple way, but the only way.

GitHub Projects (beta)のデータをSQLでクエリ・更新できるツールを作った

これは KOBA789 日記 Advent Calendar 2021 - Adventar 21日目の記事です。

GitHub Projects (beta)

みなさん GitHub Projects (beta) は使っていますか? 私はめっちゃ使っています。

しかし beta ということもあってまだまだ使いづらかったり機能が足らなかったりすることがありますよね?

マウスでポチポチしながら、SQL で操作できたらラクなのになぁと妄想したりもします。というわけで作りました。

ghsql

GitHub Projects (beta) のデータを SQL でクエリ・更新できるツールを作りました。SELECT はもちろん、UPDATE や DELETE もできます(INSERT は未実装)。

github.com

インストール

まだ crates.io とかには公開してないので、git clone して cargo install --path . してください。

使い方

Personal Access Token や Installation Access Token などを環境変数 GITHUB_TOKEN に設定してください。

コマンドの引数は以下の通りです。

USAGE:
    ghsql <OWNER> <PROJECT_NUMBER> --github-token <github-token>

SQL の例

テーブル名は items 固定です。

とりあえず全部列挙:

SELECT * FROM items;

もちろん件数も数えられる:

SELECT count(*) FROM items;

StatusIn Progress なやつだけ列挙:

SELECT * FROM items WHERE Status = 'In Progress';

リポジトリと Issue 番号を指定して StatusDone に更新:

UPDATE items SET Status = 'Done' WHERE Repository = 'owner/repo' AND Issue = 123;

StatusDone なアイテムを全部削除:

DELETE FROM items WHERE Status = 'Done';

もちろん、Iteration にも対応しています。

イテレーション(Iteration 10)の積み残しを全部次のイテレーション(Iteration 11)に持ち越し:

UPDATE items SET Iteration = 'Iteration 11' WHERE Iteration = 'Iteration 10';

その他

思いついた勢いで一気に作ったので、気合いでごり押した設計と実装になっています。

終わりに

もうアドベントカレンダーも終盤じゃん。そろそろ書かなくていいかな。