import { defineStore } from 'pinia' import { ref } from 'vue' import { invoke } from '@tauri-apps/api/core' export interface Client { id?: number name: string email?: string address?: string company?: string phone?: string tax_id?: string payment_terms?: string notes?: string } export const useClientsStore = defineStore('clients', () => { const clients = ref([]) const loading = ref(false) async function fetchClients() { loading.value = true try { clients.value = await invoke('get_clients') } catch (error) { console.error('Failed to fetch clients:', error) } finally { loading.value = false } } async function createClient(client: Client): Promise { try { const id = await invoke('create_client', { client }) clients.value.push({ ...client, id: Number(id) }) return Number(id) } catch (error) { console.error('Failed to create client:', error) return null } } async function updateClient(client: Client): Promise { try { await invoke('update_client', { client }) const index = clients.value.findIndex(c => c.id === client.id) if (index !== -1) { clients.value[index] = client } return true } catch (error) { console.error('Failed to update client:', error) return false } } async function deleteClient(id: number): Promise { try { await invoke('delete_client', { id }) clients.value = clients.value.filter(c => c.id !== id) return true } catch (error) { console.error('Failed to delete client:', error) return false } } return { clients, loading, fetchClients, createClient, updateClient, deleteClient } })