3. js / bd / pasatiempoBusca.js

1import { bdConsulta } from "../../lib/js/bdConsulta.js"
2import { leePasatiempo } from "../modelo/leePasatiempo.js"
3import { Pasatiempo } from "../modelo/Pasatiempo.js"
4import { Bd, NOMBRE_DEL_ALMACEN_PASATIEMPO } from "./Bd.js"
5
6/**
7 * @param { string | null } uuid
8 */
9export async function pasatiempoBusca(uuid) {
10
11 if (uuid === null)
12 throw new Error("Falta el uuid")
13
14 return bdConsulta(Bd, [NOMBRE_DEL_ALMACEN_PASATIEMPO],
15 /**
16 * @param { IDBTransaction } transaccion
17 * @param { (resultado: Pasatiempo|undefined) => any } resolve
18 */
19 (transaccion, resolve) => {
20
21 /* Pide el primer registro de almacén pasatiempo que tenga como
22 * llave primaria el valor del parámetro uuid. */
23 const consulta =
24 transaccion.objectStore(NOMBRE_DEL_ALMACEN_PASATIEMPO).get(uuid)
25
26 /* onsuccess se invoca solo una vez, devolviendo el registro
27 * solicitado. */
28 consulta.onsuccess = () => {
29
30 /* Se recupera el registro solicitado usando
31 * consulta.result
32 * Si el registro no se encuentra se recupera undefined. */
33 const objeto = consulta.result
34
35 if (objeto !== undefined) {
36 const modelo = leePasatiempo(objeto)
37 if (!modelo.eliminado) {
38 resolve(modelo)
39 }
40 }
41
42 resolve(undefined)
43
44 }
45
46 })
47
48}
49
50// Permite que los eventos de html usen la función.
51window["pasatiempoBusca"] = pasatiempoBusca
skip_previous skip_next