76 lines
1.8 KiB
TypeScript
76 lines
1.8 KiB
TypeScript
'use server'
|
|
|
|
import { db } from '@/lib/db'
|
|
import { revalidatePath } from 'next/cache'
|
|
import { RoomType } from '@prisma/client'
|
|
|
|
export type RoomInput = {
|
|
slug: string
|
|
type: RoomType
|
|
nameTr: string
|
|
nameEn: string
|
|
nameDe: string
|
|
descriptionTr: string
|
|
descriptionEn: string
|
|
descriptionDe: string
|
|
capacity: number
|
|
price: number | null
|
|
imageUrl: string | null
|
|
images: string[]
|
|
amenities: string[]
|
|
available: boolean
|
|
featured: boolean
|
|
}
|
|
|
|
export async function createRoom(data: RoomInput) {
|
|
try {
|
|
const room = await db.room.create({
|
|
data,
|
|
})
|
|
|
|
revalidatePath('/[locale]/admin/rooms', 'page')
|
|
revalidatePath('/[locale]/dairelerimiz', 'page')
|
|
revalidatePath('/[locale]', 'page')
|
|
|
|
return { success: true, room }
|
|
} catch (error) {
|
|
console.error('Failed to create room:', error)
|
|
return { success: false, error: 'Oda oluşturulurken bir hata oluştu.' }
|
|
}
|
|
}
|
|
|
|
export async function updateRoom(id: string, data: RoomInput) {
|
|
try {
|
|
const room = await db.room.update({
|
|
where: { id },
|
|
data,
|
|
})
|
|
|
|
revalidatePath('/[locale]/admin/rooms', 'page')
|
|
revalidatePath('/[locale]/dairelerimiz', 'page')
|
|
revalidatePath('/[locale]', 'page')
|
|
|
|
return { success: true, room }
|
|
} catch (error) {
|
|
console.error('Failed to update room:', error)
|
|
return { success: false, error: 'Oda güncellenirken bir hata oluştu.' }
|
|
}
|
|
}
|
|
|
|
export async function deleteRoom(id: string) {
|
|
try {
|
|
await db.room.delete({
|
|
where: { id },
|
|
})
|
|
|
|
revalidatePath('/[locale]/admin/rooms', 'page')
|
|
revalidatePath('/[locale]/dairelerimiz', 'page')
|
|
revalidatePath('/[locale]', 'page')
|
|
|
|
return { success: true }
|
|
} catch (error) {
|
|
console.error('Failed to delete room:', error)
|
|
return { success: false, error: 'Oda silinirken bir hata oluştu.' }
|
|
}
|
|
}
|