#59 ChatGPTが変換したDBLMからのPrisma Schemaを修正 ─ 個人開発者向けのサービスの開発記録

tyshgc
·

本日の作業

  • ✅ 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のクライアントとの連携がよりスムーズになるように設計されています。

なんか上からなんだけど…。

← #58 #60 →

@tyshgc
デザインファーム及びスタートアップ(上場)などを経てフリーランスとして、様々なスタートアップや大手企業の新規事業の立ち上げ期における事業設計・アプリケーションの設計・開発、サービスのUX分析とデザインとエンジニアリングの両軸でお手伝いさせていただいています。 現在、個人開発者向けの支援サービスを個人開発中。 X Account: @tyshgc