1 | import { bdConsulta } from "../../lib/js/bdConsulta.js" |
2 | import { validaPasatiempo } from "../modelo/validaPasatiempo.js" |
3 | import { ALMACEN_PASATIEMPO, Bd } from "./Bd.js" |
4 | |
5 | /** |
6 | * Lista todos los objetos, incluyendo los que tienen borrado lógico. |
7 | */ |
8 | export 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 | } |