本日の作業
本日は鎌倉もくもく会185回目でした。
🚴 日報・分報のcommand/event/policyのまとめ書く
🚴 commandでのバリデーション
🚴 event, policy
日報プレゼンテーション層(Remix loader/action)との結合
日報画面実装
サインインの実装
認証画面実装
認証ロジック実装(主にClient側)
Server側の認証チェック実装
Client側の認証チェック実装
🛑 🚴 イベントストーミングとサービスブループリンの融合についてzennにまとめる
🛑 🚴 Feature-Sliced Designについてzennにまとめる
command関数にバリデーション
前回実装した「日報を記録する」コマンド関数。
その後少し見直して、「日報を記録する」ではなく「日報を作成する」コマンド関数として修正しました。修正の理由は、日報の編集との絡みでその方が進めるにあたってわかりやすいという判断です。
このコード二つ気になる点があります。
prisma(永続層)とのやり取りのコードとDTOがcommand関数に書かれてあって複雑なものになってくるとコードが長くなる
入力に対してバリデーションをしていない
開発者ユーザの情報が参照されていない
1は必要になったらDTOを返すGateway関数を設けてまとめるとして、2のバリデーションは必須なのでその辺を実装していきます。
バリデーションはcommand関数へバリデーション関数として渡します。バリデーション関数には開発者ユーザの入力する日報と開発者ユーザ情報を注入する必要があります。
ただこの部分の実装がいまいちどうするのが良いのかよくわかっていないので今調査中。
その他、メモ
DMMFは理解しては後退しを続けている感じ。高階関数や関数合成にすることのメリットもやんわりわかっているもののオブジェクト指向より今現段階では自分にとって直感的ではない。ワークフローがコードとしてわかりやすいはずだけど今回書いたEvent Storming図の中に隠れている関数型プログラミングに慣れていないことが問題な気がする。
OOP DDDにも関数型プログラミングのモナドパターンを取り入れる話もちらほら出てきているのでこの辺の実装経験は今やっておいた方が良い気がしているのもあって個人開発で試しているけど…このままではいつまで経ってもリリースできない…😶🌫️