5. js / bd / pasatiempoConsultaTodos.js

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