diff --git a/package.json b/package.json index c57a610..a7ba487 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "dev": "nuxt dev --host", "generate": "nuxt generate", "preview": "nuxt preview", - "postinstall": "prisma generate && nuxt prepare", + "postinstall": "prisma generate --no-engine && nuxt prepare", "lint": "eslint .", "lint:fix": "eslint . --fix" }, @@ -16,7 +16,8 @@ "@nuxt/image": "1.1.0", "@nuxt/ui": "2.11.1", "@pinia/nuxt": "0.5.1", - "@prisma/client": "5.7.0", + "@prisma/client": "^5.7.0", + "@prisma/extension-accelerate": "^0.6.2", "@vercel/analytics": "1.1.1", "@vueuse/motion": "2.0.0", "pinia": "2.1.7", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e5ae3a4..21235f3 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -4,7 +4,8 @@ generator client { datasource db { provider = "mysql" - url = env("PRISMA_URL") + url = env("DATABASE_URL") + directUrl = env("DIRECTE_DATABASE_URL") relationMode = "prisma" } diff --git a/src/server/api/announcement.get.ts b/src/server/api/announcement.get.ts index c7e5993..7eb9677 100644 --- a/src/server/api/announcement.get.ts +++ b/src/server/api/announcement.get.ts @@ -1,6 +1,6 @@ export default defineEventHandler(async () => { return await usePrisma().announcement.findFirst({ - orderBy: { + ororderBy: { createdAt: 'desc', }, }) diff --git a/src/server/api/article.post.ts b/src/server/api/article.post.ts index 99d7166..9dc2d07 100644 --- a/src/server/api/article.post.ts +++ b/src/server/api/article.post.ts @@ -5,6 +5,9 @@ const PostSchema = z.object({ slug: z.string() }).parse export default defineEventHandler(async (event) => { const { slug } = await readValidatedBody(event, PostSchema) return await usePrisma().post.upsert({ + cacheStrategy: { + swr: 60 * 5, + }, where: { slug, }, diff --git a/src/server/api/bookmarks.get.ts b/src/server/api/bookmarks.get.ts index ebe4112..31bd6db 100644 --- a/src/server/api/bookmarks.get.ts +++ b/src/server/api/bookmarks.get.ts @@ -26,6 +26,9 @@ export default defineEventHandler(async (event) => { } return await prisma.bookmark.findMany({ + cacheStrategy: { + ttl: 60 * 3, + }, where: whereClause, orderBy: { name: 'asc', diff --git a/src/server/api/categories.get.ts b/src/server/api/categories.get.ts index 0d415c0..505a9cd 100644 --- a/src/server/api/categories.get.ts +++ b/src/server/api/categories.get.ts @@ -3,6 +3,9 @@ import type { CategoryType } from '@prisma/client' export default defineEventHandler(async (event) => { const { type } = getQuery<{ type: CategoryType }>(event) return await usePrisma().category.findMany({ + cacheStrategy: { + ttl: 60 * 3, + }, where: { type, }, diff --git a/src/server/api/maintenance.get.ts b/src/server/api/maintenance.get.ts index 273a166..0e05e6a 100644 --- a/src/server/api/maintenance.get.ts +++ b/src/server/api/maintenance.get.ts @@ -3,6 +3,9 @@ export default defineEventHandler(async () => { orderBy: { createdAt: 'desc', }, + cacheStrategy: { + ttl: 60 * 60 * 24, + }, }) let enabled = true if (process.env.NODE_ENV === 'development') { diff --git a/src/server/api/messages.get.ts b/src/server/api/messages.get.ts index 7333a77..3aa7327 100644 --- a/src/server/api/messages.get.ts +++ b/src/server/api/messages.get.ts @@ -1,5 +1,9 @@ export default defineEventHandler(async () => { return await usePrisma().guestbookMessage.findMany({ + cacheStrategy: { + ttl: 60 * 60, + swr: 60 * 5, + }, orderBy: { updatedAt: 'desc', }, diff --git a/src/server/api/talents.get.ts b/src/server/api/talents.get.ts index c601439..c4f7319 100644 --- a/src/server/api/talents.get.ts +++ b/src/server/api/talents.get.ts @@ -26,6 +26,9 @@ export default defineEventHandler(async (event) => { } return await prisma.talent.findMany({ + cacheStrategy: { + ttl: 60 * 3, + }, where: whereClause, orderBy: { name: 'asc', diff --git a/src/server/utils/prisma.ts b/src/server/utils/prisma.ts index 40583ff..2304d64 100644 --- a/src/server/utils/prisma.ts +++ b/src/server/utils/prisma.ts @@ -1,12 +1,14 @@ -import { PrismaClient } from '@prisma/client' +import { PrismaClient } from '@prisma/client/edge' +import { PrismaClientExtends } from '@prisma/client/scripts/default-index' +import { withAccelerate } from '@prisma/extension-accelerate' -let prisma: PrismaClient | undefined +let prisma: any export function usePrisma() { if (!prisma) { prisma = new PrismaClient({ log: ['warn', 'info', 'error'], - }) + }).$extends(withAccelerate()) } return prisma diff --git a/yarn.lock b/yarn.lock index ebb9413..b1def65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1822,7 +1822,7 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@prisma/client@5.7.0": +"@prisma/client@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.7.0.tgz#c29dd9a16e100902eb2d2443d90fee2482d2aeac" integrity sha512-cZmglCrfNbYpzUtz7HscVHl38e9CrUs31nrVoGUK1nIPXGgt8hT4jj2s657UXcNdQ/jBUxDgGmHyu2Nyrq1txg== @@ -1847,6 +1847,11 @@ "@prisma/fetch-engine" "5.7.0" "@prisma/get-platform" "5.7.0" +"@prisma/extension-accelerate@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@prisma/extension-accelerate/-/extension-accelerate-0.6.2.tgz#31e0fabb0b0dc318dca9b4087e89bf07219a4866" + integrity sha512-KIBVPeWt8qaSg7wQ+TXmCVeUDoW75whtXcdS9dbHxRoO2OWFH5I9+qbkHBhx5Wj/h1wQpS8usuxGnsZqiBjUpQ== + "@prisma/fetch-engine@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.7.0.tgz#7d2795828b692b02707e7ab6876f6227a68fc309"