import { defineStore } from 'pinia' import { ref } from 'vue' import { invoke } from '@tauri-apps/api/core' import { handleInvokeError } from '../utils/errorHandler' export interface EntryTemplate { id?: number name: string project_id: number task_id?: number description?: string duration: number billable: number created_at?: string } export const useEntryTemplatesStore = defineStore('entryTemplates', () => { const templates = ref([]) const loading = ref(false) async function fetchTemplates() { loading.value = true try { templates.value = await invoke('get_entry_templates') } catch (error) { handleInvokeError(error, 'Failed to fetch entry templates', () => fetchTemplates()) } finally { loading.value = false } } async function createTemplate(template: Omit): Promise { try { const id = await invoke('create_entry_template', { template }) templates.value.push({ ...template, id: Number(id) }) return Number(id) } catch (error) { handleInvokeError(error, 'Failed to create template') return null } } async function deleteTemplate(id: number) { try { await invoke('delete_entry_template', { id }) templates.value = templates.value.filter(t => t.id !== id) } catch (error) { handleInvokeError(error, 'Failed to delete template') } } return { templates, loading, fetchTemplates, createTemplate, deleteTemplate } })