src/app/api/preview-token/route.ts
Annotation non disponible
Lance npm run annotate (nécessite ANTHROPIC_API_KEY dans .env.local) pour générer une annotation française par Claude Haiku 4.5.
Concepts détectés — comprends la théorie
Route API Next.js
3 occurrencesCe fichier est une route API Next.js (App Router). Voir le contrat API complet pour les conventions de réponse et d'auth.
Voir l'article général
ORM Prisma
2 occurrencesCe fichier accède à la base de données via Prisma. Prisma est l'ORM utilisé côté backend pour les requêtes typées sur PostgreSQL.
Voir l'article général
1 export
GET
Code source· typescript
import { NextRequest, NextResponse } from 'next/server'
import { prisma } from '@/lib/prisma/client'
export async function GET(req: NextRequest) {
try {
const token = req.nextUrl.searchParams.get('token')
if (!token) return NextResponse.json({ error: 'Token manquant' }, { status: 400 })
const snapshot = await prisma.vitrineSnapshot.findUnique({
where: { previewToken: token },
select: {
id: true, data: true, previewTokenExpiry: true,
tenantId: true, label: true, createdAt: true
}
})
if (!snapshot) return NextResponse.json({ error: 'Token invalide' }, { status: 404 })
if (snapshot.previewTokenExpiry && new Date() > snapshot.previewTokenExpiry) {
return NextResponse.json({ error: 'Token expire' }, { status: 410 })
}
return NextResponse.json({ snapshot })
} catch (e) {
console.error(e)
return NextResponse.json({ error: 'Erreur serveur' }, { status: 500 })
}
}
import { NextRequest, NextResponse } from 'next/server'
import { prisma } from '@/lib/prisma/client'
export async function GET(req: NextRequest) {
try {
const token = req.nextUrl.searchParams.get('token')
if (!token) return NextResponse.json({ error: 'Token manquant' }, { status: 400 })
const snapshot = await prisma.vitrineSnapshot.findUnique({
where: { previewToken: token },
select: {
id: true, data: true, previewTokenExpiry: true,
tenantId: true, label: true, createdAt: true
}
})
if (!snapshot) return NextResponse.json({ error: 'Token invalide' }, { status: 404 })
if (snapshot.previewTokenExpiry && new Date() > snapshot.previewTokenExpiry) {
return NextResponse.json({ error: 'Token expire' }, { status: 410 })
}
return NextResponse.json({ snapshot })
} catch (e) {
console.error(e)
return NextResponse.json({ error: 'Erreur serveur' }, { status: 500 })
}
}