98 lines
2.6 KiB
TypeScript
98 lines
2.6 KiB
TypeScript
"use server";
|
|
|
|
import { prisma } from "@/lib/prisma";
|
|
import { revalidatePath } from "next/cache";
|
|
|
|
export async function getGalleryImages() {
|
|
try {
|
|
const images = await prisma.galleryImage.findMany({
|
|
orderBy: [
|
|
{ order: 'asc' },
|
|
{ createdAt: 'desc' }
|
|
]
|
|
});
|
|
return { success: true, data: images };
|
|
} catch (error) {
|
|
console.error("Error fetching gallery images:", error);
|
|
return { success: false, error: "Galeri görsellerini çekerken bir hata oluştu." };
|
|
}
|
|
}
|
|
|
|
export async function createGalleryImage(formData: FormData) {
|
|
try {
|
|
const src = formData.get("src") as string;
|
|
const alt = formData.get("alt") as string || "";
|
|
const orderStr = formData.get("order") as string;
|
|
const order = orderStr ? parseInt(orderStr, 10) : 0;
|
|
|
|
if (!src) {
|
|
return { success: false, error: "Görsel URL'si zorunludur." };
|
|
}
|
|
|
|
await prisma.galleryImage.create({
|
|
data: {
|
|
src,
|
|
alt,
|
|
order,
|
|
},
|
|
});
|
|
|
|
revalidatePath("/admin/gallery");
|
|
revalidatePath("/");
|
|
revalidatePath("/tr");
|
|
revalidatePath("/en");
|
|
return { success: true };
|
|
} catch (error) {
|
|
console.error("Error creating gallery image:", error);
|
|
return { success: false, error: "Galeri görseli eklenirken bir hata oluştu." };
|
|
}
|
|
}
|
|
|
|
export async function updateGalleryImage(id: string, formData: FormData) {
|
|
try {
|
|
const src = formData.get("src") as string;
|
|
const alt = formData.get("alt") as string || "";
|
|
const orderStr = formData.get("order") as string;
|
|
const order = orderStr ? parseInt(orderStr, 10) : 0;
|
|
|
|
if (!src) {
|
|
return { success: false, error: "Görsel URL'si zorunludur." };
|
|
}
|
|
|
|
await prisma.galleryImage.update({
|
|
where: { id },
|
|
data: {
|
|
src,
|
|
alt,
|
|
order,
|
|
},
|
|
});
|
|
|
|
revalidatePath("/admin/gallery");
|
|
revalidatePath("/");
|
|
revalidatePath("/tr");
|
|
revalidatePath("/en");
|
|
return { success: true };
|
|
} catch (error) {
|
|
console.error("Error updating gallery image:", error);
|
|
return { success: false, error: "Galeri görseli güncellenirken bir hata oluştu." };
|
|
}
|
|
}
|
|
|
|
export async function deleteGalleryImage(id: string) {
|
|
try {
|
|
await prisma.galleryImage.delete({
|
|
where: { id },
|
|
});
|
|
|
|
revalidatePath("/admin/gallery");
|
|
revalidatePath("/");
|
|
revalidatePath("/tr");
|
|
revalidatePath("/en");
|
|
return { success: true };
|
|
} catch (error) {
|
|
console.error("Error deleting gallery image:", error);
|
|
return { success: false, error: "Galeri görseli silinirken bir hata oluştu." };
|
|
}
|
|
}
|