"use server"; import { db } from "@/db"; import { apps } from "@/db/schema"; import { eq, desc } from "drizzle-orm"; import { revalidatePath } from "next/cache"; import { redirect } from "next/navigation"; export async function getApps() { return await db.query.apps.findMany({ orderBy: [desc(apps.createdAt)], }); } export async function getAppById(id: number) { if (isNaN(id)) return null; return await db.query.apps.findFirst({ where: eq(apps.id, id), }); } export async function createApp(formData: FormData) { const name = (formData.get("name") as string)?.trim(); const bundleId = (formData.get("bundleId") as string)?.trim(); const platform = formData.get("platform") as string; const appleId = (formData.get("appleId") as string)?.trim() || null; if (!name || !bundleId) throw new Error("İsim ve Bundle ID zorunludur."); await db.insert(apps).values({ name, bundleId, platform: platform as any, appleId: appleId, }); revalidatePath("/apps"); revalidatePath("/"); redirect("/apps"); } export async function updateApp(id: number, formData: FormData) { if (isNaN(id)) throw new Error("Geçersiz Uygulama ID"); const name = (formData.get("name") as string)?.trim(); const bundleId = (formData.get("bundleId") as string)?.trim(); const platform = formData.get("platform") as string; const appleId = (formData.get("appleId") as string)?.trim() || null; const status = formData.get("status") as string; if (!name || !bundleId) throw new Error("İsim ve Bundle ID zorunludur."); await db.update(apps).set({ name, bundleId, platform: platform as any, appleId: appleId, status: status as any, updatedAt: new Date(), }).where(eq(apps.id, id)); revalidatePath("/apps"); revalidatePath("/"); redirect("/apps"); } export async function deleteApp(id: number) { if (isNaN(id)) return; await db.delete(apps).where(eq(apps.id, id)); revalidatePath("/apps"); revalidatePath("/"); }