feat: integrate Cloudinary image upload, Instagram Feed, and fix Next.js warnings

This commit is contained in:
2026-06-09 21:28:45 +03:00
parent 2b3392dcb1
commit a4ad9344a0
52 changed files with 4300 additions and 263 deletions
+104
View File
@@ -0,0 +1,104 @@
"use server";
import { prisma } from "@/lib/prisma";
import { revalidatePath } from "next/cache";
export async function getEvents() {
try {
const events = await prisma.event.findMany({
orderBy: { createdAt: 'desc' }
});
return { success: true, data: events };
} catch (error) {
console.error("Error fetching events:", error);
return { success: false, error: "Etkinlikleri çekerken bir hata oluştu." };
}
}
export async function createEvent(formData: FormData) {
try {
const title = formData.get("title") as string;
const time = formData.get("time") as string;
const tag = formData.get("tag") as string;
const iconType = formData.get("iconType") as string || "music";
const colorTheme = formData.get("colorTheme") as string || "cyan";
const isFeatured = formData.get("isFeatured") === "on";
if (!title || !time || !tag) {
return { success: false, error: "Başlık, zaman ve etiket alanları zorunludur." };
}
await prisma.event.create({
data: {
title,
time,
tag,
iconType,
colorTheme,
isFeatured,
},
});
revalidatePath("/admin/events");
revalidatePath("/");
revalidatePath("/tr");
revalidatePath("/en");
return { success: true };
} catch (error) {
console.error("Error creating event:", error);
return { success: false, error: "Etkinlik oluşturulurken bir hata oluştu." };
}
}
export async function updateEvent(id: string, formData: FormData) {
try {
const title = formData.get("title") as string;
const time = formData.get("time") as string;
const tag = formData.get("tag") as string;
const iconType = formData.get("iconType") as string || "music";
const colorTheme = formData.get("colorTheme") as string || "cyan";
const isFeatured = formData.get("isFeatured") === "on";
if (!title || !time || !tag) {
return { success: false, error: "Başlık, zaman ve etiket alanları zorunludur." };
}
await prisma.event.update({
where: { id },
data: {
title,
time,
tag,
iconType,
colorTheme,
isFeatured,
},
});
revalidatePath("/admin/events");
revalidatePath("/");
revalidatePath("/tr");
revalidatePath("/en");
return { success: true };
} catch (error) {
console.error("Error updating event:", error);
return { success: false, error: "Etkinlik güncellenirken bir hata oluştu." };
}
}
export async function deleteEvent(id: string) {
try {
await prisma.event.delete({
where: { id },
});
revalidatePath("/admin/events");
revalidatePath("/");
revalidatePath("/tr");
revalidatePath("/en");
return { success: true };
} catch (error) {
console.error("Error deleting event:", error);
return { success: false, error: "Etkinlik silinirken bir hata oluştu." };
}
}