conectar frontend con Turso: puente tauri-db.ts + UsersStore con sync KAPPA↔Turso y campos locales

This commit is contained in:
2026-05-26 16:34:39 -05:00
parent 0534817470
commit 1013d1c843
2 changed files with 194 additions and 3 deletions
+126
View File
@@ -0,0 +1,126 @@
import { invoke } from '@tauri-apps/api/core'
export interface AlphaUserRecord {
id: number
email: string
first_name: string
last_name: string
role: string | null
seniority: string | null
cell_id: number | null
is_active: boolean
created_at: string | null
}
export interface CellRecord {
id: number
name: string
description: string | null
created_at: string | null
}
export interface ProjectMemberRecord {
id: number
user_id: number
initiative_id: number
initiative_name: string | null
role: string | null
assigned_at: string | null
}
export interface AbsenceRecord {
id: number
user_id: number
start_date: string
end_date: string
type: string
reason: string | null
created_at: string | null
}
export interface DailyLogRecord {
id: number
user_id: number
initiative_id: number
date: string
work_item_id: number | null
what_worked_on: string | null
progress_pct: number | null
impediments: string | null
plan_for_tomorrow: string | null
hours_spent: number | null
created_at: string | null
}
export interface PerformanceRecord {
id: number
user_id: number
initiative_id: number | null
period: string
planned_sp: number | null
completed_sp: number | null
planned_hours: number | null
actual_hours: number | null
velocity: number | null
spi: number | null
cpi: number | null
compliance_pct: number | null
impediment_count: number | null
calculated_at: string | null
}
export const tauriDb = {
// Users
getUsers(): Promise<AlphaUserRecord[]> {
return invoke('get_users')
},
saveUser(user: AlphaUserRecord): Promise<number> {
return invoke('save_user', { user })
},
updateUserFields(id: number, role: string | null, seniority: string | null, cell_id: number | null): Promise<void> {
return invoke('update_user_fields', { id, role, seniority, cellId: cell_id })
},
// Cells
getCells(): Promise<CellRecord[]> {
return invoke('get_cells')
},
saveCell(cell: CellRecord): Promise<number> {
return invoke('save_cell', { cell })
},
// Project Members
getProjectMembers(userId: number): Promise<ProjectMemberRecord[]> {
return invoke('get_project_members', { userId })
},
saveProjectMembers(userId: number, members: ProjectMemberRecord[]): Promise<void> {
return invoke('save_project_members', { userId, members })
},
// Absences
getAbsences(userId: number): Promise<AbsenceRecord[]> {
return invoke('get_absences', { userId })
},
saveAbsence(absence: AbsenceRecord): Promise<number> {
return invoke('save_absence', { absence })
},
deleteAbsence(id: number): Promise<void> {
return invoke('delete_absence', { id })
},
// Daily Logs
getDailyLogs(userId: number, initiativeId?: number): Promise<DailyLogRecord[]> {
return invoke('get_daily_logs', { userId, initiativeId: initiativeId ?? null })
},
saveDailyLog(log: DailyLogRecord): Promise<number> {
return invoke('save_daily_log', { log })
},
// Performance
getPerformance(userId: number, initiativeId?: number): Promise<PerformanceRecord[]> {
return invoke('get_performance', { userId, initiativeId })
},
savePerformance(snap: PerformanceRecord): Promise<number> {
return invoke('save_performance', { snap })
},
}