1. js / bd / Bd.js

1export const ALMACEN_PASATIEMPO = "PASATIEMPO"
2export const PAS_ID = "PAS_ID"
3export const INDICE_NOMBRE = "INDICE_NOMBRE"
4export const PAS_NOMBRE = "PAS_NOMBRE"
5const BD_NOMBRE = "sincronizacion"
6const BD_VERSION = 1
7
8/** @type { Promise<IDBDatabase> } */
9export const Bd = new Promise((resolve, reject) => {
10
11 /* Se solicita abrir la base de datos, indicando nombre y
12 * número de versión. */
13 const solicitud = indexedDB.open(BD_NOMBRE, BD_VERSION)
14
15 // Si se presenta un error, rechaza la promesa.
16 solicitud.onerror = () => reject(solicitud.error)
17
18 // Si se abre con éxito, devuelve una conexión a la base de datos.
19 solicitud.onsuccess = () => resolve(solicitud.result)
20
21 // Si es necesario, se inicia una transacción para cambio de versión.
22 solicitud.onupgradeneeded = () => {
23
24 const bd = solicitud.result
25
26 // Como hay cambio de versión, borra el almacén si es que existe.
27 if (bd.objectStoreNames.contains(ALMACEN_PASATIEMPO)) {
28 bd.deleteObjectStore(ALMACEN_PASATIEMPO)
29 }
30
31 // Crea el almacén "PASATIEMPO" con el campo llave "PAS_ID".
32 const almacenPasatiempo =
33 bd.createObjectStore(ALMACEN_PASATIEMPO, { keyPath: PAS_ID })
34
35 // Crea un índice ordenado por el campo "PAS_NOMBRE" que no acepta duplicados.
36 almacenPasatiempo.createIndex(INDICE_NOMBRE, "PAS_NOMBRE")
37 }
38
39})
skip_previous skip_next