Blog3 に pubDate を実装する

rss-to-twitter を使うために Blog3 に pubDate という概念を実装していく。 今までは created_at を ATOM feed の pubDate に埋めていた。実際には下書き状態で書いていくので create_at と pubDate の乖離があったのだが、フィードリーダーで読む分には困らんだろということで気にしていなかった。 rss-to-twitter ではこのカラムをつかって重複排除することになるのでちゃんとした値を入れる必要が出てきた。 本来実装すべきものなのでちゃんと実装する気にやっとなったというワケ。

まずは alter をして、カラムを追加する。

alter table entry add published_at datetime DEFAULT NULL after format;
alter table entry add index published_at (published_at);

次に、既存のエントリに対して埋めていく。もはや初回の publish date などわからないんで、、公開されているエントリにたいして created_at を埋めていく。

update entry set published_at=created_at where visibility='public' and published_at is null;

トリガーで今後は埋めるようにしても良いのだが、MariaDB のトリガーは後々存在忘れてめんどくさいことになるかもしれないので普通にアプリケーションコードで実現していく。 トリガーで実装するほうが簡単だなぁと思ったのだけど、同様の処理を github copilot に実装させたらできたので、別にコードで実装すれば良いなとなった。

トップページの表示とかも published_at 順に変えて完成。

Pull-request を出した。Visual Studio Code だとコミットメッセージを自動生成して auto-merge 状態で PR を出すっていうのが簡単にできるんで個人開発が捗る。。 https://github.com/tokuhirom/blog3/pull/810

というわけで完成。