import { useState, useEffect, useCallback } from 'react' import { databases, DATABASE_ID, COLLECTIONS, ID, Query } from '../lib/appwrite' const DEMO_MODE = !import.meta.env.VITE_APPWRITE_PROJECT_ID // Demo-Kunden für Testing const DEMO_CUSTOMERS = [ { $id: '1', code: 'C001', name: 'Kunde A', location: 'Berlin', email: 'kunde.a@example.com', phone: '030-123456' }, { $id: '2', code: 'C002', name: 'Kunde B', location: 'München', email: 'kunde.b@example.com', phone: '089-654321' } ] export function useCustomers() { const [customers, setCustomers] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const fetchCustomers = useCallback(async () => { if (DEMO_MODE) { setCustomers(DEMO_CUSTOMERS) setLoading(false) return } try { const response = await databases.listDocuments( DATABASE_ID, COLLECTIONS.CUSTOMERS, [Query.orderAsc('name')] ) setCustomers(response.documents) setError(null) } catch (err) { console.error('Error fetching customers:', err) // Wenn Collection nicht existiert, setze leeres Array (kein Fehler) if (err.code === 404 || err.message?.includes('not found')) { setCustomers([]) setError(null) // Kein Fehler, Collection existiert einfach noch nicht } else { setError(err.message) setCustomers([]) } } finally { setLoading(false) } }, []) useEffect(() => { fetchCustomers() }, [fetchCustomers]) const createCustomer = async (data) => { if (DEMO_MODE) { const newCustomer = { ...data, $id: Date.now().toString() } setCustomers(prev => [...prev, newCustomer]) return { success: true, data: newCustomer } } try { const response = await databases.createDocument( DATABASE_ID, COLLECTIONS.CUSTOMERS, ID.unique(), data ) setCustomers(prev => [...prev, response]) return { success: true, data: response } } catch (err) { return { success: false, error: err.message } } } const updateCustomer = async (id, data) => { if (DEMO_MODE) { setCustomers(prev => prev.map(c => c.$id === id ? { ...c, ...data } : c)) return { success: true } } try { const response = await databases.updateDocument( DATABASE_ID, COLLECTIONS.CUSTOMERS, id, data ) setCustomers(prev => prev.map(c => c.$id === id ? response : c)) return { success: true, data: response } } catch (err) { return { success: false, error: err.message } } } const deleteCustomer = async (id) => { if (DEMO_MODE) { setCustomers(prev => prev.filter(c => c.$id !== id)) return { success: true } } try { await databases.deleteDocument( DATABASE_ID, COLLECTIONS.CUSTOMERS, id ) setCustomers(prev => prev.filter(c => c.$id !== id)) return { success: true } } catch (err) { return { success: false, error: err.message } } } return { customers, loading, error, refresh: fetchCustomers, createCustomer, updateCustomer, deleteCustomer } }