blog.bouzuya.net

2022-09-26 ABC123 の A, B, C, D を解いた / twiq 実装メモ (6)

ABC123 : AtCoder Beginner Contest 123 の A, B, C, D を解いた。


twiq 実装メモ (6)

作業のスタックの把握。

  • user を解決するところまで動作させたい
  • repository などの実装が提供されていない
  • EventStore trait を実装したい
  • FirestoreEventStore は一意性検査などで時間がかかってしまう
  • InMemoryEventStore を使う InMemoryUserRepository をつくりたい

InMemoryEventStore を使う InMemoryUserRepository

  • 2022-09-21 にようやく戻ってきた
  • EventStore trait に EventStream を反映させる
  • EventStore trait の変更に InMemoryEventStore を対応させる
  • EventStore trait の変更に FirestoreEventStore を対応させる
  • InMemoryUserRepository::storeUser::version が必要
  • User::version を実装する代わりに impl From<User> for EventStream にする
  • どうもバグっている
  • UserEventStream の変換がおかしそう
  • 直したけどまだダメ
  • EventStore に二重でイベントが入っていた
  • InMemoryUserRepository が動くようになった

User::request までの動作確認。

  • 同一 TwitterUserId で何度も Event が作られてしまう
  • InMemoryUserRepository の unique index の更新が漏れていた
  • web::router::users_show のエラーハンドリングがないので重複時にエラーレスポンスを返せていない
  • エンキュー自体は伏せておいて良いものなのでエラーは潰してしまおう (ロギングは別途必要そう)

今日のコミット。