概要
ChatGPTに自分用のSQL整形ツールを作ってもらった。
GitHub Pagesで公開している。 delhi09.github.io
コード
背景
- いまだにいいSQL整形ツールを見つけられていない
- ※ 自分が求めるいいSQL整形ツール
- → textareaに入力したSQLを整形してくれるindex.html x JSをホストすればよさそうだなと思った
- → JS製の信頼できそうなSQL整形ライブラリが見つからなかった
- ※ 私はJSのエコシステムに疎いので、探せばあるのかもしれない
- → PythonであればsqlparseというDjangoでも使われている信頼できるライブラリがあるので、これをWASMで実行すればいいのでは?と考えた
やったこと
WASMに関して、「ブラウザ上でJS以外のプログラミング言語を実行できる何か」程度の知識しかないので、ChatGPTにできるか聞いてみたら、「はい」という返事とともにコードまで生成してくれた。

ただ、このコードにはSQLが改行を含む場合にエラーになる不具合があった。
1行のSQLの場合は成功する

改行するSQLの場合にエラーになる

上記の事象をChatGPTに伝えたところ、以下のJSON.stringifyを2回かけてサニタイズするコードを提案してくれた。

これで改行ありのSQLでも整形されるようになった。

まだなぜJSON.stringifyを2回かけるとエラーが解消されたのか理解しきれていないが、コードを読むといわゆるevalっぽいことをやっている → JSで埋め込んだテキストの改行がサニタイズされてなくてPythonがインデントと解釈してしまったんだなーというのは何となく分かった。
ほしかったツールが作れたのでよしとする。