Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLIツールの追加 #29

Merged
merged 4 commits into from
Aug 26, 2022
Merged

CLIツールの追加 #29

merged 4 commits into from
Aug 26, 2022

Conversation

shibukawa
Copy link
Contributor

SQLランナー

コンテキストとスコープ

2-Way-SQLで作成したSQLを、プログラムを作成することなく実行できる。そのためのCLIツールを作成する。

ゴール

  • SQLファイルを読み込んで実行できる。
  • パラメータの設定も可能
  • 実行結果はJSONやCSV、markdownの表などで出力する

ゴール外

  • パラメータの型チェックはしない。現在のSQLの書き方では型情報がなく、DBにアクセスしないと型がわからない。そのチェックを行う実装は複雑になりすぎてしまう問題がある。
  • SQL実行にあたって、スキーマやマスターデータを事前投入などは行わない

実際のデザイン

  • CLIツールとして作成し、SQLファイルを読み込んで実行する。
  • どのDBに接続するかを設定ファイルやパラメータで指定可能とする。
  • パラメータはオプションで設定する(項目ごと、or JSON)か、jqなどの利用を考慮して標準入力で渡すことも可能とする
  • 出力は標準出力に出す

システムコンテキスト図

graph TD;

標準入力 -->|パラメータ| CLIツール
オプション -->|パラメータ| CLIツール
SQLファイル -->|引数| CLIツール
CLIツール -->|標準出力| 実行結果
Loading

代替案

  • Webのランチャーは後回しにする。プレイグラウンド(編集機能)開発が重いため。

* run:  execute sql
* eval: perform 2-Way-SQL only
* list driver: dump driver list
@shibukawa shibukawa requested review from ma91n and future-taga August 25, 2022 01:21
cli/eval.go Outdated
return err
}

src, err := ioutil.ReadFile(srcPath)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ioutilはdeprecatedなので、 os.ReadFile のほうが?
サポートバージョン的にioutilで行くのではなければですが

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1.17はリリースバージョンから落ちたからもうos.ReadFileでいいですね。直しました

@shibukawa shibukawa merged commit 1b1ab1c into master Aug 26, 2022
@shibukawa shibukawa deleted the feature/runner branch August 26, 2022 09:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants