Open4
prismaでfull nameをどう実装するか?
firstName
, familyName
というカラムがある場合に、 fullName
を取得するメソッドは何処に実装するか?
今まで扱ってきたORMだと、モデルやエンティティがクラスとして存在するので、そこに実装すれば良い。
prismaの場合は、DBから取得したデータは plain old JavaScript objects として扱われるので、 fullName
のようなコードを何処に書けばいいか迷う。
メモ
- calendso見てみた
- libs以下に雑多に定義されている印象
- awesome-prismaのprojects using prisma見てみた
- https://github.com/catalinmiron/awesome-prisma#space_invader-projects-using-prisma
- それほど複雑なものはなかった
- fwに応じたresolver, service的なものに、prisma clientを使うコードが書かれている感じ
- 検索: domain model prisma?
-
https://scrapbox.io/fsubal/Prisma_を綺麗に使いたければ_MVC_という発想を忘れるのが良いのでは
- 課題感は一緒、考え方は解るような、解らないような。
- 外部へのinterfaceとしては、「graphqlのresolverとして実装する」はひとつの答えな気がする
- 内部のクライアントへのinterfaceはどうするか?
- 課題感は一緒、考え方は解るような、解らないような。
-
https://nordicapis.com/the-role-of-domain-driven-architecture-and-graphql-in-digital-transformation/
- 自分が抱えている疑問よりもだいぶスケールの大きな話だったのでこれじゃなかった。
-
https://scrapbox.io/fsubal/Prisma_を綺麗に使いたければ_MVC_という発想を忘れるのが良いのでは
- https://gitplanet.com/label/prisma open source prisma projects
読んでみたけど答えは見つからず。
同じような課題感がきちんとした言葉で表現されている。
回答としては、
- クラスじゃなくて関数群を使う
- ポリモーフィズムが必要なところだけクラスを使う
まさにスクラップ名通りだけど、やりたいことにたいして複雑すぎるように感じる。
一旦の整理としては、、
- 自分の頭が従来のORM感覚に縛られれているから困惑していると思ったけど、そういうわけでもなさそう
- デフォルトでドメインモデルを記述場所が提供されていないから、設計、実装に自由度がある
- 個人的には面白さを感じる部分だけど、チームで上手くやっていくのは結構大変
- 上手くやらないとすぐに秩序がなくなる気がする
- 現時点で自分が技術選定するとなると、typeormを使う気がする
- 個人的には面白さを感じる部分だけど、チームで上手くやっていくのは結構大変
- 実装方法としては
- まずは、POJOを受け取るシンプルな関数群
- ある程度複雑になってきた場合、適当なドメインモデルをクラスとして実装