A. js / Bd.js

1
export const ALMACEN_PASATIEMPO = "PASATIEMPO"
2
export const PAS_ID = "PAS_ID"
3
export const INDICE_NOMBRE = "INDICE_NOMBRE"
4
export const PAS_NOMBRE = "PAS_NOMBRE"
5
const BD_NOMBRE = "sincro"
6
const BD_VERSION = 1
7
8
/** @type { Promise<IDBDatabase> } */
9
export 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