TypedSQL
型安全な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
SQLからquery functionが生成される
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に対する引数も、返り値にも型が付いている