46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
'use server'
|
||
|
||
import { createClient } from "@/lib/supabase-server"
|
||
import { SiteContent } from "@/types/cms"
|
||
import { revalidatePath } from "next/cache"
|
||
|
||
export async function updateSiteContent(contents: SiteContent[]) {
|
||
const supabase = await createClient()
|
||
|
||
try {
|
||
const { data: { user } } = await supabase.auth.getUser()
|
||
|
||
if (!user) {
|
||
return { success: false, error: "Oturum açmanız gerekiyor" }
|
||
}
|
||
|
||
// Upsert each content item
|
||
// Since we might have many items, we can do this in parallel or a single upsert if the structure allows
|
||
// Supabase upsert accepts an array
|
||
const { error } = await supabase
|
||
.from('site_contents')
|
||
.upsert(
|
||
contents.map(item => ({
|
||
key: item.key,
|
||
value: item.value,
|
||
type: item.type,
|
||
section: item.section,
|
||
updated_at: new Date().toISOString()
|
||
}))
|
||
)
|
||
|
||
if (error) {
|
||
console.error('CMS Update Error:', error)
|
||
return { success: false, error: "Güncelleme sırasında bir hata oluştu: " + error.message }
|
||
}
|
||
|
||
revalidatePath('/dashboard/cms/content')
|
||
revalidatePath('/') // Revalidate home page as it likely uses these settings
|
||
|
||
return { success: true }
|
||
} catch (error) {
|
||
console.error('CMS Update Error:', error)
|
||
return { success: false, error: "Bir hata oluştu" }
|
||
}
|
||
}
|