Open11

Denoでprismaを使う

GunseiKPaseriGunseiKPaseri

https://www.prisma.io/docs/guides/deployment/deployment-guides/deploying-to-deno-deploy
に大体あるんだけど,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とか勝手に生成されるのを見逃せばそれ以降はどうにか動きそう

GunseiKPaseriGunseiKPaseri

ごにょごにょしまくったら動いた
prisma://mysql://の使い分けが必要そうな点、transactionが使えないのが今の課題

GunseiKPaseriGunseiKPaseri

使い分けが必要な箇所(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~~~じゃダメだった

GunseiKPaseriGunseiKPaseri

やったゴニョゴニョはあとでまとめたいけどとりあえず書いておけば
バージョン上げ等(一部名前変わってるパッケージ有り)
https://github.com/GunseiKPaseri/prisma-data-proxy-alt/tree/fix_for_compose
以下のようなスクリプトで,こっちでビルドするときは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 "$@"

みたいな感じ

もう少し整理したい

GunseiKPaseriGunseiKPaseri

あと,prisma://のhttps通信のcert周りも問題がありそうで上の設定のままだと--unsafely-ignore-certificate-errorsオプションが必要そう
できれば消したいしできれば一つのコンテナにしたい