blog.bouzuya.net

2022-10-24 『競技プログラミングの鉄則』 6.1 偶奇を考えるまで読んだ

『競技プログラミングの鉄則』 6.1 偶奇を考えるまで読んだ。


twiq 実装メモ (34)

FirestoreUserRepository の実装。

  • 現時点での EventStore trait の API では EventStore 内で begin_transaction, commit, rollback する想定になっている
  • user_ids, twitter_user_ids と EventStore (events & event_streams) が別トランザクションになってしまう
  • EventStore は Repository の実装として利用されるもの
  • Repository のメソッドがトランザクションの単位なので、 EventStore のメソッドをトランザクションの単位とするのをやめる
  • EventStore では外部からトランザクションを受け取って読み取る
  • EventStore では commit せずに Vec<Write> を返す
  • EventStore trait を変更せずに、 FirestoreRpcEventStore でそれを実現する……できるのか

EventStore のトランザクション対応。

  • FirestoreRpcEventStore はトランザクションを受け取って構築する (トランザクションを保持する)
  • EventStore のメソッドを処理する (処理結果 (Vec<Write>) を保持する)
  • FirestoreRpcEventStore は処理結果 (Vec<Write>) を返す

ひさしぶりに Ricty を入れてみた。


今日のコミット。