ABC270 に参加した。 1161 → 1181 (+20) 。 D も F もうまくやれば解けそうな気がした……。 E が解けたのは良かった。解けなかったらかなり落ちたはず。
https://atcoder.jp/users/bouzuya/history/share/abc270
bouzuya/rust-sandbox twiq 実装メモ (4)
作業のスタックの把握。
user
を解決するところまで動作させたい- repository などの実装が提供されていない
EventStore
trait を実装したいFirestoreEventStore
は一意性検査などで時間がかかってしまうInMemoryEventStore
を使うInMemoryUserRepository
をつくりたいUser::from_event_stream
をつくりたいRawEvent
(event_store_core::Event
) からEvent
をtype
が原因でうまくとりだせない
Event, EventType, EventStream, EventStreamType の ERD 。
erDiagram Event EventType EventStream EventStreamType Event }o--|| EventType : "" Event }|--|| EventStream : "" Event }o--|| EventStreamType : "(via EventType)" EventType }|--|| EventStream : "(via Event)" EventType }|--|| EventStreamType : "" EventStream }o--|| EventStreamType : ""
impl TryFrom<RawEvent> for Event
をつくっていく- 各 aggregate event に
type
を追加する impl TryFrom<RawEvent> for domain::aggregate::x::Event
をつくる- domain event と aggregate event の重複が多いので
RawEvent
への変換をひとまず domain event のみにして domain event と aggregate event 間の変換を設ける
今日のコミット。
- rust-sandbox 18 commits
- twiq: Add User::from_event_stream
- twiq: Add conversion between DomainEvent and AggregateEvent
- twiq: Remove RawEvent conversion from aggregate event
- twiq: Fix firestore_event_store::event_to_fields
- twiq: Fix impl TryFrom<RawEvent> for Event
- twiq: Add impl TryFrom<RawEvent> for UserRequestStarted
- twiq: Add impl TryFrom<RawEvent> for UserRequestFinished
- twiq: Add impl TryFrom<RawEvent> for UserRequestCreated
- twiq: Add impl TryFrom<RawEvent> for UserUpdated
- twiq: Add impl TryFrom<RawEvent> for UserRequested
- twiq: Add impl TryFrom<RawEvent> for UserCreated
- twiq: Add UserRequestStarted::r#type
- twiq: Add UserRequestFinished::r#type
- twiq: Add UserRequestCreated::r#type
- twiq: Add UserUpdated::r#type
- twiq: Add UserRequested::r#type
- twiq: Add UserCreated::r#type
- twiq: Add event-erd to docs
- rust-atcoder 1 commit