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 を入れてみた。
今日のコミット。