TypedSQL
Prisma v5.19
型安全なSQLを書ける
https://github.com/prisma/prisma-examples/tree/latest/typescript/typedsql
手順の例 ref
schema.prismaがあるdirにsql/を作ってその中で.sqlを書く
code:prisma/sql/conversionByVariant.sql
SELECT "variant", CAST("checked_out" AS FLOAT) / CAST("opened" AS FLOAT) AS "conversion"
FROM (
SELECT
"variant",
COUNT(*) FILTER (WHERE "type"='PageOpened') AS "opened",
COUNT(*) FILTER (WHERE "type"='CheckedOut') AS "checked_out"
FROM "TrackingEvent"
GROUP BY "variant"
) AS "counts"
ORDER BY "conversion" DESC
λ prisma generate --sqlを実行する
SQLからquery functionが生成される
$queryRawTypedを使って型つきのqueryを呼べる
code:ts
import { PrismaClient } from '@prisma/client'
import { conversionByVariant } from '@prisma/client/sql'
/ result is fully typed!
const result = await prisma.$queryRawTyped(conversionByVariant())
importした関数名が、上記の.sqlのfile名に対応している
queryに対する引数も、返り値にも型が付いている
Announcing TypedSQL: Make your raw SQL queries type-safe with Prisma ORM
$queryRaw
生SQLに型を手書きする時代は終わり?Prismaの新機能「TypedSQL」
sqlcとコンセプトが近いらしい