Denoでprismaを使う
に大体あるんだけど,Deno Deployに対応しただけでnpmを排除できる感じでは無さそう.
generateはnpm installが走るのでnpmがインストールされてない環境でdeno run --unstable -A npm:prisma@^4.7.1 generate
はできない
(prisma@4.7.1時点)
npmが入ってる環境から引っ張ってくると型解決はできる
とりあえずnpm入れてpackage.jsonとか勝手に生成されるのを見逃せばそれ以降はどうにか動きそう
denoは--data-proxyでしか生成されないのでprisma://必須らしい
なのでdocker-compose内で閉じた実行をするのは工夫が必要そう
は使えるか?
ごにょごにょしまくったら動いた
prisma://
とmysql://
の使い分けが必要そうな点、transactionが使えないのが今の課題
entrなりでprismaファイルの変更を検知してリビルドするやつをやりたかったけどうまくいかない.infotifyが動かないっぽい
↓を使うかpollingさせるか
使い分けが必要な箇所(db push
)は以下のようなスクリプトを噛ませておけばとりあえず動く
($DATABASE_URL=mysql://
・$SHADOW_DATABASE_URL=prisma://
)
#! /bin/sh
HOGE=$DATABASE_URL
DATABASE_URL=$SHADOW_DATABASE_URL
exec "$@"
DATABASE_URL=$HOGE
DATABASE_URL=$SHADOW_DATABASE_URL deno~~~
じゃダメだった
やったゴニョゴニョはあとでまとめたいけどとりあえず書いておけば
バージョン上げ等(一部名前変わってるパッケージ有り)
以下のようなスクリプトで,こっちでビルドするときはpreviewFeatures = ["deno"]
を無視させる
# remove deno preview features
cat ./prisma-original/schema.prisma \
| grep -v "previewFeatures" \
| grep -v "../generated/client" \
> ./prisma/schema.prisma
yarn prisma generate
yarn run build
exec "$@"
みたいな感じ
もう少し整理したい
あと,prisma://のhttps通信のcert周りも問題がありそうで上の設定のままだと--unsafely-ignore-certificate-errors
オプションが必要そう
できれば消したいしできれば一つのコンテナにしたい
prisma v5でjsonProtocolが一般提供された関係で上のものはprisma-data-proxy-altはもう動かなくなった。
issueはある。あるだけ類似の動き(でも動いてないなぁ)
公式側にDeno関係で目立った動きなし
denoのnode対応の動向も追うといいのかな