G. js / pasatiempoConsultaTodos.js

1
import { bdConsulta } from "./lib/bdConsulta.js"
2
import { validaPasatiempo } from "./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("./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