4. js / bd / pasatiempoConsultaNoEliminados.js

1import { bdConsulta } from "../../lib/js/bdConsulta.js"
2import { exportaAHtml } from "../../lib/js/exportaAHtml.js"
3import { validaPasatiempo } from "../modelo/validaPasatiempo.js"
4import { ALMACEN_PASATIEMPO, Bd, INDICE_NOMBRE } from "./Bd.js"
5
6export async function pasatiempoConsultaNoEliminados() {
7
8 return bdConsulta(Bd, [ALMACEN_PASATIEMPO],
9 /**
10 * @param {(resultado: import("../modelo/PASATIEMPO.js").PASATIEMPO[])=>void
11 * } resolve
12 */
13 (transaccion, resolve) => {
14
15 const resultado = []
16
17 const almacenPasatiempo = transaccion.objectStore(ALMACEN_PASATIEMPO)
18
19 // Usa el índice INDICE_NOMBRE para recuperar los datos ordenados.
20 const indiceNombre = almacenPasatiempo.index(INDICE_NOMBRE)
21
22 // Pide un cursor para recorrer cada objeto que devuelve la consulta.
23 const consulta = indiceNombre.openCursor()
24
25 /* onsuccess se invoca por cada uno de los objetos de la consulta y una vez
26 * cuando se acaban dichos objetos. */
27 consulta.onsuccess = () => {
28 /* El cursor correspondiente al objeto se recupera usando
29 * consulta.result */
30 const cursor = consulta.result
31 if (cursor === null) {
32 /* Si el cursor vale null, ya no hay más objetos que procesar; por lo
33 * mismo, se devuelve el resultado con los pasatiempos recuperados, usando
34 * resolve(resultado). */
35 resolve(resultado)
36 } else {
37 /* Si el cursor no vale null y hay más objetos, el siguiente se obtiene con
38 * cursor.value */
39 const modelo = validaPasatiempo(cursor.value)
40 if (modelo.PAS_ELIMINADO === 0) {
41 resultado.push(modelo)
42 }
43 /* Busca el siguiente objeto de la consulta, que se recupera la siguiente
44 * vez que se invoque la función onsuccess. */
45 cursor.continue()
46 }
47 }
48
49 })
50
51}
52
53exportaAHtml(pasatiempoConsultaNoEliminados)
skip_previous skip_next