Files
kozmos-web/app/actions/gallery.ts
T

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." };
}
}