Fix: Agregar migración de datos para sesiones antiguas
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m3s
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m3s
- Agregar función migrateSesion() que convierte el formato antiguo al nuevo
- Formato antiguo: { categoria: string, subcategoria: string }
- Formato nuevo: { categorias: string[], subcategorias: string[] }
- Migración automática al cargar sesiones desde IndexedDB
- Maneja casos donde categorias/subcategorias son null o undefined
This commit is contained in:
@@ -74,6 +74,65 @@ async function saveSession(sesion: SesionCatacion): Promise<void> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Migra una sesión del formato antiguo al nuevo
|
||||
*/
|
||||
function migrateSesion(sesion: any): SesionCatacion {
|
||||
// Migrar cada muestra
|
||||
const muestrasMigradas = sesion.muestras.map((muestra: any) => {
|
||||
const muestraMigrada = { ...muestra }
|
||||
|
||||
// Migrar fraganciaAromaNotas
|
||||
if (muestra.fraganciaAromaNotas) {
|
||||
const notas = muestra.fraganciaAromaNotas
|
||||
// Si tiene el formato antiguo (categoria como string)
|
||||
if ('categoria' in notas && typeof notas.categoria === 'string') {
|
||||
muestraMigrada.fraganciaAromaNotas = {
|
||||
categorias: notas.categoria ? [notas.categoria] : [],
|
||||
subcategorias: notas.subcategoria ? [notas.subcategoria] : [],
|
||||
notaEspecifica: notas.notaEspecifica,
|
||||
}
|
||||
}
|
||||
// Si ya tiene el formato nuevo pero es null
|
||||
else if (notas.categorias === null || notas.categorias === undefined) {
|
||||
muestraMigrada.fraganciaAromaNotas = {
|
||||
categorias: [],
|
||||
subcategorias: [],
|
||||
notaEspecifica: notas.notaEspecifica || null,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Migrar saborNotas
|
||||
if (muestra.saborNotas) {
|
||||
const notas = muestra.saborNotas
|
||||
// Si tiene el formato antiguo (categoria como string)
|
||||
if ('categoria' in notas && typeof notas.categoria === 'string') {
|
||||
muestraMigrada.saborNotas = {
|
||||
categorias: notas.categoria ? [notas.categoria] : [],
|
||||
subcategorias: notas.subcategoria ? [notas.subcategoria] : [],
|
||||
notaEspecifica: notas.notaEspecifica,
|
||||
}
|
||||
}
|
||||
// Si ya tiene el formato nuevo pero es null
|
||||
else if (notas.categorias === null || notas.categorias === undefined) {
|
||||
muestraMigrada.saborNotas = {
|
||||
categorias: [],
|
||||
subcategorias: [],
|
||||
notaEspecifica: notas.notaEspecifica || null,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return muestraMigrada
|
||||
})
|
||||
|
||||
return {
|
||||
...sesion,
|
||||
muestras: muestrasMigradas,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Carga la sesión activa desde IndexedDB
|
||||
*/
|
||||
@@ -90,7 +149,13 @@ async function loadSession(): Promise<SesionCatacion | null> {
|
||||
getAllRequest.onsuccess = () => {
|
||||
const sesiones = getAllRequest.result as SesionCatacion[]
|
||||
// Retornar la primera sesión (debería haber solo una)
|
||||
const sesion = sesiones.length > 0 ? sesiones[0] : null
|
||||
let sesion = sesiones.length > 0 ? sesiones[0] : null
|
||||
|
||||
// Migrar sesión si es necesario
|
||||
if (sesion) {
|
||||
sesion = migrateSesion(sesion)
|
||||
}
|
||||
|
||||
resolve(sesion || null)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user