Skip to content

Commit

Permalink
Use prisma planetscale adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
lemonmade committed Mar 17, 2024
1 parent 46757b5 commit cfda349
Show file tree
Hide file tree
Showing 10 changed files with 105 additions and 80 deletions.
4 changes: 2 additions & 2 deletions app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
"dependencies": {
"@aws-sdk/client-s3": "^3.19.0",
"@aws-sdk/s3-request-presigner": "^3.19.0",
"@prisma/client": "^5.4.0",
"@prisma/client": "^5.11.0",
"@types/react": "^18.2.39",
"@types/react-dom": "^18.2.0",
"aws-sdk": "^2.935.0",
"prisma": "^5.4.0",
"prisma": "^5.11.0",
"stripe": "^11.4.0"
},
"devDependencies": {
Expand Down
14 changes: 2 additions & 12 deletions functions/stripe/stripe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
PaymentStatus,
SUBSCRIPTION_LEVELS,
} from '~/global/subscriptions.ts';
import {createEdgeDatabaseConnection} from '~/global/database.ts';

import type {Email, EmailType, PropsForEmail} from '../email/index.tsx';

Expand Down Expand Up @@ -81,18 +82,7 @@ router.post('internal/stripe/webhooks', async (request, {env}) => {

console.log(event);

const [{PrismaClient}, {withAccelerate}] = await Promise.all([
import('@prisma/client/edge'),
import('@prisma/extension-accelerate'),
]);

const prisma = new PrismaClient({
datasources: {
db: {
url: env.DATABASE_URL,
},
},
}).$extends(withAccelerate());
const prisma = await createEdgeDatabaseConnection({url: env.DATABASE_URL});

try {
// @see https://stripe.com/docs/webhooks/stripe-events
Expand Down
17 changes: 4 additions & 13 deletions functions/tmdb-refresher-scheduler/tmdb-refresher-scheduler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import {
type ExportedHandlerScheduledHandler,
} from '@cloudflare/workers-types';

import {createEdgeDatabaseConnection} from '~/global/database.ts';

import {type Message} from '../tmdb-refresher/tmdb-refresher.ts';

interface Environment {
Expand All @@ -12,21 +14,10 @@ interface Environment {

const scheduled: ExportedHandlerScheduledHandler<Environment> =
async function scheduled(event, env) {
const [{PrismaClient}, {withAccelerate}] = await Promise.all([
import('@prisma/client/edge'),
import('@prisma/extension-accelerate'),
]);

const prisma = new PrismaClient({
datasources: {
db: {
url: env.DATABASE_URL,
},
},
}).$extends(withAccelerate());

console.log(event);

const prisma = await createEdgeDatabaseConnection({url: env.DATABASE_URL});

const series = await prisma.series.findMany({
where: {status: 'RETURNING'},
});
Expand Down
1 change: 1 addition & 0 deletions functions/tmdb-refresher-scheduler/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"compilerOptions": {
"outDir": "build/typescript",
"paths": {
"~/global/*": ["../../global/*"],
"~/shared/*": ["../shared/*"]
}
},
Expand Down
17 changes: 2 additions & 15 deletions functions/tmdb-refresher/tmdb-refresher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {Buffer} from 'buffer-polyfill';
import type {ExportedHandlerQueueHandler} from '@cloudflare/workers-types';

import {updateSeries} from '~/global/tmdb.ts';
import {createEdgeDatabaseConnection} from '~/global/database.ts';

interface Environment {
DATABASE_URL: string;
Expand Down Expand Up @@ -169,20 +170,6 @@ let prismaPromise:
| undefined;

async function createPrisma(url: string) {
prismaPromise ??= (async () => {
const [{PrismaClient}, {withAccelerate}] = await Promise.all([
import('@prisma/client/edge'),
import('@prisma/extension-accelerate'),
]);

const prisma = new PrismaClient({
datasources: {
db: {url},
},
}).$extends(withAccelerate());

return prisma as any;
})();

prismaPromise ??= createEdgeDatabaseConnection({url});
return await prismaPromise;
}
23 changes: 23 additions & 0 deletions global/database.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
export async function createEdgeDatabaseConnection({url}: {url: string}) {
const [{Client: PlanetScaleClient}, {PrismaClient}, {PrismaPlanetScale}] =
await Promise.all([
import('@planetscale/database'),
import('@prisma/client/edge'),
import('@prisma/adapter-planetscale'),
]);

const client = new PlanetScaleClient({
url,
// @see https://github.com/cloudflare/workerd/issues/698
fetch(url, init) {
if (init) delete init['cache'];
return fetch(url, init);
},
});

const adapter = new PrismaPlanetScale(client);

const prisma = new PrismaClient({adapter});

return prisma;
}
9 changes: 5 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
"devDependencies": {
"@changesets/changelog-github": "^0.4.3",
"@changesets/cli": "^2.26.2",
"@prisma/client": "^5.4.0",
"@prisma/extension-accelerate": "^0.6.2",
"@planetscale/database": "^1.16.0",
"@prisma/client": "^5.11.0",
"@prisma/adapter-planetscale": "^5.11.0",
"@quilted/browserslist-config": "^0.1.9",
"@quilted/cloudflare": "^0.2.4",
"@quilted/craft": "^0.2.5",
Expand All @@ -45,7 +46,7 @@
"nodemon": "^2.0.0",
"preact": "^10.19.2",
"prettier": "^3.1.0",
"prisma": "^5.4.0",
"prisma": "^5.11.0",
"react": "npm:@quilted/react@^18.2.0",
"react-dom": "npm:@quilted/react-dom@^18.2.0",
"rollup": "^4.6.0",
Expand All @@ -56,7 +57,7 @@
"vitest": "^1.1.1",
"wrangler": "^3.28.4"
},
"packageManager": "pnpm@8.10.5+sha256.a4bd9bb7b48214bbfcd95f264bd75bb70d100e5d4b58808f5cd6ab40c6ac21c5",
"packageManager": "pnpm@8.15.4+sha256.cea6d0bdf2de3a0549582da3983c70c92ffc577ff4410cbf190817ddc35137c2",
"prettier": "@quilted/prettier",
"browserslist": [
"defaults and not dead"
Expand Down
93 changes: 64 additions & 29 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ datasource db {

generator client {
provider = "prisma-client-js"
previewFeatures = ["driverAdapters"]
}

enum SpoilerAvoidance {
Expand Down
6 changes: 1 addition & 5 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
{
"extends": "@quilted/typescript/workspace.json",
"include": [
"configuration/**/*.ts",
"scripts/**/*.ts",
"graphql.config.ts"
],
"include": ["configuration/**/*.ts", "scripts/**/*.ts", "graphql.config.ts"],
"compilerOptions": {
"outDir": "build/typescript/workspace",
"module": "ESNext",
Expand Down

0 comments on commit cfda349

Please sign in to comment.