Files
Şahan Hasret 76c31274d5 Database
2025-11-21 17:46:30 +03:00

99 lines
2.6 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { NextRequest, NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';
import { withAuth } from '@/lib/auth';
// GET - Tüm mesajları getir (Auth gerekli)
export async function GET(request: NextRequest) {
return withAuth(request, async () => {
try {
const messages = await prisma.message.findMany({
orderBy: { createdAt: 'desc' },
});
return NextResponse.json(messages);
} catch (error) {
console.error('Messages fetch error:', error);
return NextResponse.json(
{ error: 'Mesajlar alınırken hata oluştu' },
{ status: 500 }
);
}
});
}
// POST - Yeni mesaj gönder (Public - iletişim formu)
export async function POST(request: NextRequest) {
try {
const data = await request.json();
const message = await prisma.message.create({
data: {
name: data.name,
email: data.email,
phone: data.phone || '',
subject: data.subject,
type: data.type || 'contact',
message: data.message,
read: false,
date: new Date().toISOString().split('T')[0],
},
});
return NextResponse.json(message, { status: 201 });
} catch (error) {
console.error('Message create error:', error);
return NextResponse.json(
{ error: 'Mesaj gönderilirken hata oluştu' },
{ status: 500 }
);
}
}
// PUT - Mesajı okundu olarak işaretle (Auth gerekli)
export async function PUT(request: NextRequest) {
return withAuth(request, async () => {
try {
const data = await request.json();
const message = await prisma.message.update({
where: { id: data.id },
data: { read: data.read },
});
return NextResponse.json(message);
} catch (error) {
console.error('Message update error:', error);
return NextResponse.json(
{ error: 'Mesaj güncellenirken hata oluştu' },
{ status: 500 }
);
}
});
}
// DELETE - Mesaj sil (Auth gerekli)
export async function DELETE(request: NextRequest) {
return withAuth(request, async () => {
try {
const { searchParams } = new URL(request.url);
const id = searchParams.get('id');
if (!id) {
return NextResponse.json({ error: 'ID gerekli' }, { status: 400 });
}
await prisma.message.delete({
where: { id: parseInt(id) },
});
return NextResponse.json({ message: 'Mesaj silindi' });
} catch (error) {
console.error('Message delete error:', error);
return NextResponse.json(
{ error: 'Mesaj silinirken hata oluştu' },
{ status: 500 }
);
}
});
}