feat: Upgrade to Next.js 16.1 & React 19.2, migrate to Supabase SSR with async client handling

This commit is contained in:
2025-12-19 20:31:46 +01:00
parent d9b44a0ec5
commit 24e243fff8
49 changed files with 942 additions and 852 deletions

53
src/services/buddy.ts Normal file
View File

@@ -0,0 +1,53 @@
'use server';
import { createClient } from '@/lib/supabase/server';
import { BuddySchema, BuddyData } from '@/types/whisky';
export async function addBuddy(rawData: BuddyData) {
const supabase = await createClient();
try {
const { name } = BuddySchema.parse(rawData);
const { data: { session } } = await supabase.auth.getSession();
if (!session) throw new Error('Nicht autorisiert');
const { data, error } = await supabase
.from('buddies')
.insert([{ name, user_id: session.user.id }])
.select()
.single();
if (error) throw error;
return { success: true, data };
} catch (error) {
console.error('Add Buddy Error:', error);
return {
success: false,
error: error instanceof Error ? error.message : 'Fehler beim Hinzufügen des Buddies',
};
}
}
export async function deleteBuddy(id: string) {
const supabase = await createClient();
try {
const { data: { session } } = await supabase.auth.getSession();
if (!session) throw new Error('Nicht autorisiert');
const { error } = await supabase
.from('buddies')
.delete()
.eq('id', id)
.eq('user_id', session.user.id);
if (error) throw error;
return { success: true };
} catch (error) {
console.error('Delete Buddy Error:', error);
return {
success: false,
error: error instanceof Error ? error.message : 'Fehler beim Löschen des Buddies',
};
}
}