fix: resolve prisma v6 warning and next 15 form action typings

This commit is contained in:
AyrisAI
2026-07-13 14:10:44 +03:00
parent 5b44c78396
commit 9866413511
7 changed files with 93 additions and 31 deletions
+74 -17
View File
@@ -46,7 +46,7 @@ export async function submitBusinessAction(formData: FormData) {
})
revalidatePath('/admin/submissions')
return { success: true }
return { success: true, error: undefined }
}
export async function submitContactMessageAction(formData: FormData) {
@@ -67,7 +67,7 @@ export async function submitContactMessageAction(formData: FormData) {
})
revalidatePath('/admin/messages')
return { success: true }
return { success: true, error: undefined }
}
export async function approveSubmissionAction(id: string) {
@@ -105,13 +105,13 @@ export async function approveSubmissionAction(id: string) {
revalidatePath('/restaurants')
revalidatePath('/aparts')
revalidatePath('/businesses')
return { success: true }
return { success: true, error: undefined }
}
export async function rejectSubmissionAction(id: string) {
await mockDb.updateSubmissionStatus(id, 'REJECTED')
revalidatePath('/admin/submissions')
return { success: true }
return { success: true, error: undefined }
}
export async function deleteListingAction(id: string) {
@@ -120,21 +120,21 @@ export async function deleteListingAction(id: string) {
revalidatePath('/restaurants')
revalidatePath('/aparts')
revalidatePath('/businesses')
return { success: true }
return { success: true, error: undefined }
}
export async function restoreListingAction(id: string) {
await mockDb.restoreListing(id)
revalidatePath('/admin/trash')
revalidatePath('/admin/listings')
return { success: true }
return { success: true, error: undefined }
}
export async function hardDeleteListingAction(id: string) {
try {
await mockDb.hardDeleteListing(id)
revalidatePath('/admin/trash')
return { success: true }
return { success: true, error: undefined }
} catch (err: any) {
if (err.message?.includes('RESTRICT') || err.message?.includes('Foreign key constraint')) {
return { success: false, error: 'Silme başarısız: Bu mekana bağlı etkinlik (Event) veya kayıtlar var.' }
@@ -146,7 +146,7 @@ export async function hardDeleteListingAction(id: string) {
export async function markMessageReadAction(id: string) {
await mockDb.markMessageAsRead(id)
revalidatePath('/admin/messages')
return { success: true }
return { success: true, error: undefined }
}
export async function createOrUpdateListingAction(formData: FormData) {
@@ -250,7 +250,7 @@ export async function createOrUpdateListingAction(formData: FormData) {
revalidatePath('/restaurants')
revalidatePath('/aparts')
revalidatePath('/businesses')
return { success: true }
return { success: true, error: undefined }
} catch (err: any) {
return { success: false, error: err.message || 'Mekan kaydedilemedi.' }
}
@@ -261,7 +261,7 @@ export async function deleteBlogPostAction(id: string) {
await mockDb.deleteBlogPost(id)
revalidatePath('/admin/blog')
revalidatePath('/blog')
return { success: true }
return { success: true, error: undefined }
}
export async function createOrUpdateBlogPostAction(formData: FormData) {
@@ -319,7 +319,7 @@ export async function createOrUpdateBlogPostAction(formData: FormData) {
revalidatePath('/admin/blog')
revalidatePath('/blog')
revalidatePath(`/blog/${slug}`)
return { success: true }
return { success: true, error: undefined }
} catch (err: any) {
return { success: false, error: err.message || 'Yazı kaydedilemedi.' }
}
@@ -330,7 +330,7 @@ export async function deleteCollectionAction(id: string) {
await mockDb.deleteCollection(id)
revalidatePath('/admin/collections')
revalidatePath('/collections')
return { success: true }
return { success: true, error: undefined }
}
export async function createOrUpdateCollectionAction(formData: FormData) {
@@ -380,7 +380,7 @@ export async function createOrUpdateCollectionAction(formData: FormData) {
revalidatePath('/admin/collections')
revalidatePath('/collections')
revalidatePath(`/collection/${slug}`)
return { success: true }
return { success: true, error: undefined }
} catch (err: any) {
return { success: false, error: err.message || 'Koleksiyon kaydedilemedi.' }
}
@@ -391,7 +391,7 @@ export async function deleteEventAction(id: string) {
await mockDb.deleteEvent(id)
revalidatePath('/admin/events')
revalidatePath('/events')
return { success: true }
return { success: true, error: undefined }
}
export async function createOrUpdateEventAction(formData: FormData) {
@@ -449,7 +449,7 @@ export async function createOrUpdateEventAction(formData: FormData) {
revalidatePath('/admin/events')
revalidatePath('/events')
revalidatePath(`/event/${slug}`)
return { success: true }
return { success: true, error: undefined }
} catch (err: any) {
return { success: false, error: err.message || 'Etkinlik kaydedilemedi.' }
}
@@ -464,7 +464,7 @@ export async function deleteNeighborhoodAction(id: string) {
await mockDb.deleteNeighborhood(id)
revalidatePath('/admin/neighborhoods')
return { success: true }
return { success: true, error: undefined }
} catch (err: any) {
if (err.message?.includes('RESTRICT') || err.message?.includes('Foreign key constraint')) {
return { success: false, error: 'Silme başarısız: Bu mahalleye bağlı gizli (silinmiş veya arşivlenmiş) mekanlar veya etkinlikler var.' }
@@ -498,7 +498,7 @@ export async function createOrUpdateNeighborhoodAction(formData: FormData) {
await mockDb.createNeighborhood(data)
}
revalidatePath('/admin/neighborhoods')
return { success: true }
return { success: true, error: undefined }
} catch (err: any) {
return { success: false, error: err.message || 'Mahalle kaydedilemedi.' }
}
@@ -606,3 +606,60 @@ export async function deleteCategoryAction(formData: FormData) {
await mockDb.deleteCategory(id)
revalidatePath('/admin/categories')
}
export async function deleteSubmissionAction(id: string) {
await mockDb.deleteSubmission(id)
revalidatePath('/admin/submissions')
return { success: true, error: undefined }
}
export async function deleteMessageAction(id: string) {
await mockDb.deleteMessage(id)
revalidatePath('/admin/messages')
return { success: true, error: undefined }
}
export async function searchListingsAction(query: string) {
if (!query || query.length < 2) return []
const allListings = await mockDb.getListings()
const q = query.toLowerCase()
const results = allListings.filter(l =>
!l.deletedAt && (
l.nameTr.toLowerCase().includes(q) ||
l.nameEn?.toLowerCase().includes(q) ||
l.nameRu?.toLowerCase().includes(q)
)
).slice(0, 5) // Return max 5 suggestions
return results.map(l => ({
id: l.id,
nameTr: l.nameTr,
nameEn: l.nameEn,
nameRu: l.nameRu,
slug: l.slug,
categorySlug: l.category?.slug || 'restoran'
}))
}
export async function saveWidgetPartnerAction(formData: FormData) {
const id = formData.get('id') as string | null
const name = formData.get('name') as string
const logoUrl = formData.get('logoUrl') as string
const websiteUrl = formData.get('websiteUrl') as string
const widgetType = formData.get('widgetType') as string
if (!name || !logoUrl || !websiteUrl) {
return { error: 'Lütfen zorunlu alanları doldurun.' }
}
if (id) {
await mockDb.updateWidgetPartner(id, { name, logoUrl, websiteUrl, widgetType })
} else {
await mockDb.createWidgetPartner({ name, logoUrl, websiteUrl, widgetType })
}
revalidatePath('/admin/widget-partners')
return { success: true, error: undefined }
}