本日の作業
✅ ChatGPTの書いたPrisma Schameの修正
🚴 分報・日報・ユーザに関する設計・実装
🚴 Server側のDMMFの実装
🚴 ドメインモデル層のI/Fとzod実装
Services実装
テストを書く
サインインの実装
認証画面実装
認証ロジック実装(主にClient側)
Server側の認証チェック実装
Client側の認証チェック実装
🛑 🚴 イベントストーミングとサービスブループリンの融合についてzennにまとめる(次のもくもく会で書く予定)
その他、メモ
DBML -> Prismaの変換でのエラーやフォーマット
DBMLをPrismaにChatGPTで変換してもらったが、結構フォーマットがあっていないぽくエラー出まくってたので修正。主に次の内容。
relationでEvent Store系など中間テーブル自体に@@idが必要なのにないままだった。ChatGPT的にはDBMLのままに変換したぽい。
エラーではないけどDBMLがsnake_caseをModelやEnum名はPascalCaseに、カラム名はcamelCaseに、Enum値は全部大文字に変換しました。
課題
prisma client側で呼び出す際にsnake_caseだと次の様になってしまいます。テーブル名はまだ良いですが、whereのオブジェクト要素名がsnake_caseだと "" が必要になってしまい記述が面倒になります。
あとはprisma clientで取得したオブジェクトを関数の引数やクラスのコンストラクタにオブジェクトでそのまま渡してみたくしたくてもsnake_caseからcamelCaseに変換するみたいなことを場合によってはしなくてはならずprisma依存みたいになってしまうので面倒です。
以前Railsエンジニアがこれと同じことをPrisma Schemaでやっていて気づいた時には大量にコードが書かれていたのでやらなくていい苦労をしました😇
snake_caseでもいいですがチームで事前にコンセンサスを取った上で進めるか、早い段階で一度コードレビューをチームでする方が健全だと思います(あの時の愚痴)。
全部終わってもIDE側でエラーになっている場合は一度 `npx prisma format` すると解消する場合もあります。
というわけで修正前と修正したschemaです。
修正前
修正後
これについて確認も含めて修正したスキーマをChatGPTに投げてみたら次の回答でした。
提供していただいた修正済みのPrismaスキーマを確認しました。これは、Prismaの慣習に従い、改良されたバージョンです。テーブル名をPascalCaseに、カラム名をcamelCaseに、そしてEnumの値をすべて大文字にすることは、Prismaを使用する際の一般的なプラクティスに沿ったものです。また、多対多の関係を持つテーブルで@@id()を使用して複合キーを定義するのも正しい手法です。
このスキーマは、Prismaの規約に適合しており、Prismaのクライアントとの連携がよりスムーズになるように設計されています。
なんか上からなんだけど…。