import Dexie, { type Table } from 'dexie'; import type { Productor, Producto, MovimientoInventario, Venta, VentaLinea, Gasto, Ajuste, CuadreCaja, JornadaToldo, Auditoria } from '@toldo/core'; export class ToldoDB extends Dexie { productores!: Table; productos!: Table; movimientosInventario!: Table; ventas!: Table; ventaLineas!: Table; gastos!: Table; ajustes!: Table; cuadres!: Table; jornadas!: Table; auditorias!: Table; constructor() { super('ToldoConjuntoDB'); this.version(1).stores({ productores: 'id, nombre, activo', productos: 'id, productorId, nombrePresentacion, [productorId+nombrePresentacion]', movimientosInventario: 'id, fecha, tipo, productoId', ventas: 'id, fecha', ventaLineas: 'id, ventaId, productoId, formaPago', gastos: 'id, fecha', ajustes: 'id, fecha, productoId', cuadres: 'id, fecha' }); this.version(2).stores({ productores: 'id, nombre, activo', productos: 'id, productorId, nombrePresentacion, [productorId+nombrePresentacion]', movimientosInventario: 'id, fecha, tipo, productoId', ventas: 'id, fecha', ventaLineas: 'id, ventaId, productoId, formaPago', gastos: 'id, fecha', ajustes: 'id, fecha, productoId', cuadres: 'id, fecha', jornadas: 'id, fecha, estado' }); this.version(3).stores({ productores: 'id, nombre, activo', productos: 'id, productorId, nombrePresentacion, [productorId+nombrePresentacion]', movimientosInventario: 'id, fecha, tipo, productoId', ventas: 'id, fecha', ventaLineas: 'id, ventaId, productoId, formaPago', gastos: 'id, fecha', ajustes: 'id, fecha, productoId', cuadres: 'id, fecha', jornadas: 'id, fecha, estado', auditorias: 'id, entidad, registroId, fecha' }); } } export const db = new ToldoDB(); export async function openDatabase() { await db.open(); return db; } export async function resetDatabase() { await db.delete(); await db.open(); }